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