• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
15 namespace chromeos {
16 
17 class CrosSettings;
18 class UserManagerImpl;
19 
20 // Implementation of the UserManager.
21 class 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