supervised_user_manager_impl.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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/managed/supervised_user_authentication.h" 13#include "chrome/browser/chromeos/login/users/supervised_user_manager.h" 14 15namespace chromeos { 16 17class CrosSettings; 18class UserManagerImpl; 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* 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* FindByDisplayName(const base::string16& display_name) 34 const OVERRIDE; 35 virtual const User* FindBySyncId(const std::string& sync_id) const OVERRIDE; 36 virtual std::string GetUserSyncId(const std::string& user_id) const OVERRIDE; 37 virtual base::string16 GetManagerDisplayName(const std::string& user_id) const 38 OVERRIDE; 39 virtual std::string GetManagerUserId(const std::string& user_id) const 40 OVERRIDE; 41 virtual std::string GetManagerDisplayEmail(const std::string& user_id) const 42 OVERRIDE; 43 virtual void StartCreationTransaction(const base::string16& display_name) 44 OVERRIDE; 45 virtual void SetCreationTransactionUserId(const std::string& user_id) 46 OVERRIDE; 47 virtual void CommitCreationTransaction() OVERRIDE; 48 virtual SupervisedUserAuthentication* GetAuthentication() OVERRIDE; 49 virtual void GetPasswordInformation(const std::string& user_id, 50 base::DictionaryValue* result) OVERRIDE; 51 virtual void SetPasswordInformation( 52 const std::string& user_id, 53 const base::DictionaryValue* password_info) OVERRIDE; 54 virtual void LoadSupervisedUserToken( 55 Profile * profile, 56 const LoadTokenCallback& callback) OVERRIDE; 57 virtual void ConfigureSyncWithToken( 58 Profile* profile, 59 const std::string& token) OVERRIDE; 60 61 private: 62 friend class UserManager; 63 friend class UserManagerImpl; 64 65 explicit SupervisedUserManagerImpl(UserManagerImpl* owner); 66 67 // Returns true if there is non-committed user creation transaction. 68 bool HasFailedUserCreationTransaction(); 69 70 // Attempts to clean up data that could be left from failed user creation. 71 void RollbackUserCreationTransaction(); 72 73 void RemoveNonCryptohomeData(const std::string& user_id); 74 75 bool CheckForFirstRun(const std::string& user_id); 76 77 // Update name if this user is manager of some managed users. 78 void UpdateManagerName(const std::string& manager_id, 79 const base::string16& new_display_name); 80 81 bool GetUserStringValue(const std::string& user_id, 82 const char* key, 83 std::string* out_value) const; 84 85 void SetUserStringValue(const std::string& user_id, 86 const char* key, 87 const std::string& value); 88 89 bool GetUserIntegerValue(const std::string& user_id, 90 const char* key, 91 int* out_value) const; 92 93 void SetUserIntegerValue(const std::string& user_id, 94 const char* key, 95 const int value); 96 97 bool GetUserBooleanValue(const std::string& user_id, 98 const char* key, 99 bool* out_value) const; 100 101 void SetUserBooleanValue(const std::string& user_id, 102 const char* key, 103 const bool value); 104 105 void CleanPref(const std::string& user_id, 106 const char* key); 107 108 UserManagerImpl* owner_; 109 110 // Interface to the signed settings store. 111 CrosSettings* cros_settings_; 112 113 scoped_ptr<SupervisedUserAuthentication> authentication_; 114 115 DISALLOW_COPY_AND_ASSIGN(SupervisedUserManagerImpl); 116}; 117 118} // namespace chromeos 119 120#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_ 121