1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_ 7 8#include <vector> 9 10#include "base/basictypes.h" 11#include "base/compiler_specific.h" 12#include "chrome/browser/chromeos/login/supervised/supervised_user_authentication.h" 13#include "chrome/browser/chromeos/login/users/supervised_user_manager.h" 14 15namespace chromeos { 16 17class ChromeUserManagerImpl; 18class CrosSettings; 19 20// Implementation of the UserManager. 21class SupervisedUserManagerImpl 22 : public SupervisedUserManager { 23 public: 24 virtual ~SupervisedUserManagerImpl(); 25 26 virtual bool HasSupervisedUsers(const std::string& manager_id) const OVERRIDE; 27 virtual const user_manager::User* CreateUserRecord( 28 const std::string& manager_id, 29 const std::string& local_user_id, 30 const std::string& sync_user_id, 31 const base::string16& display_name) OVERRIDE; 32 virtual std::string GenerateUserId() OVERRIDE; 33 virtual const user_manager::User* FindByDisplayName( 34 const base::string16& display_name) const OVERRIDE; 35 virtual const user_manager::User* FindBySyncId( 36 const std::string& sync_id) const OVERRIDE; 37 virtual std::string GetUserSyncId(const std::string& user_id) const OVERRIDE; 38 virtual base::string16 GetManagerDisplayName(const std::string& user_id) const 39 OVERRIDE; 40 virtual std::string GetManagerUserId(const std::string& user_id) const 41 OVERRIDE; 42 virtual std::string GetManagerDisplayEmail(const std::string& user_id) const 43 OVERRIDE; 44 virtual void StartCreationTransaction(const base::string16& display_name) 45 OVERRIDE; 46 virtual void SetCreationTransactionUserId(const std::string& user_id) 47 OVERRIDE; 48 virtual void CommitCreationTransaction() OVERRIDE; 49 virtual SupervisedUserAuthentication* GetAuthentication() OVERRIDE; 50 virtual void GetPasswordInformation(const std::string& user_id, 51 base::DictionaryValue* result) OVERRIDE; 52 virtual void SetPasswordInformation( 53 const std::string& user_id, 54 const base::DictionaryValue* password_info) OVERRIDE; 55 virtual void LoadSupervisedUserToken( 56 Profile * profile, 57 const LoadTokenCallback& callback) OVERRIDE; 58 virtual void ConfigureSyncWithToken( 59 Profile* profile, 60 const std::string& token) OVERRIDE; 61 62 private: 63 friend class ChromeUserManagerImpl; 64 friend class UserManager; 65 66 explicit SupervisedUserManagerImpl(ChromeUserManagerImpl* owner); 67 68 // Returns true if there is non-committed user creation transaction. 69 bool HasFailedUserCreationTransaction(); 70 71 // Attempts to clean up data that could be left from failed user creation. 72 void RollbackUserCreationTransaction(); 73 74 void RemoveNonCryptohomeData(const std::string& user_id); 75 76 bool CheckForFirstRun(const std::string& user_id); 77 78 // Update name if this user is manager of some managed users. 79 void UpdateManagerName(const std::string& manager_id, 80 const base::string16& new_display_name); 81 82 bool GetUserStringValue(const std::string& user_id, 83 const char* key, 84 std::string* out_value) const; 85 86 void SetUserStringValue(const std::string& user_id, 87 const char* key, 88 const std::string& value); 89 90 bool GetUserIntegerValue(const std::string& user_id, 91 const char* key, 92 int* out_value) const; 93 94 void SetUserIntegerValue(const std::string& user_id, 95 const char* key, 96 const int value); 97 98 bool GetUserBooleanValue(const std::string& user_id, 99 const char* key, 100 bool* out_value) const; 101 102 void SetUserBooleanValue(const std::string& user_id, 103 const char* key, 104 const bool value); 105 106 void CleanPref(const std::string& user_id, 107 const char* key); 108 109 ChromeUserManagerImpl* owner_; 110 111 // Interface to the signed settings store. 112 CrosSettings* cros_settings_; 113 114 scoped_ptr<SupervisedUserAuthentication> authentication_; 115 116 DISALLOW_COPY_AND_ASSIGN(SupervisedUserManagerImpl); 117}; 118 119} // namespace chromeos 120 121#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_ 122