OLD | NEW |
| (Empty) |
1 // Copyright 2013 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_SUPERVISED_USER_MANAGER_H_ | |
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_USER_MANAGER_H_ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/basictypes.h" | |
11 #include "base/callback.h" | |
12 #include "base/strings/string16.h" | |
13 #include "base/values.h" | |
14 #include "chrome/browser/profiles/profile.h" | |
15 | |
16 class PrefRegistrySimple; | |
17 | |
18 namespace chromeos { | |
19 | |
20 class User; | |
21 class SupervisedUserAuthentication; | |
22 | |
23 // Keys in dictionary with supervised password information. | |
24 extern const char kSchemaVersion[]; | |
25 extern const char kPasswordRevision[]; | |
26 extern const char kSalt[]; | |
27 extern const char kRequirePasswordUpdate[]; | |
28 extern const char kHasIncompleteKey[]; | |
29 extern const int kMinPasswordRevision; | |
30 | |
31 // Values for these keys are not stored in local state. | |
32 extern const char kEncryptedPassword[]; | |
33 extern const char kPasswordSignature[]; | |
34 extern const char kPasswordEncryptionKey[]; | |
35 extern const char kPasswordSignatureKey[]; | |
36 | |
37 extern const char kPasswordUpdateFile[]; | |
38 | |
39 // Base class for SupervisedUserManagerImpl - provides a mechanism for getting | |
40 // and setting specific values for supervised users, as well as additional | |
41 // lookup methods that make sense only for supervised users. | |
42 class SupervisedUserManager { | |
43 public: | |
44 typedef base::Callback<void(const std::string& /* token */)> | |
45 LoadTokenCallback; | |
46 | |
47 // Registers user manager preferences. | |
48 static void RegisterPrefs(PrefRegistrySimple* registry); | |
49 | |
50 SupervisedUserManager() {} | |
51 virtual ~SupervisedUserManager() {} | |
52 | |
53 // Checks if given user have supervised users on this device. | |
54 | |
55 virtual bool HasSupervisedUsers(const std::string& manager_id) const = 0; | |
56 | |
57 // Creates supervised user with given |display_name| and |local_user_id| | |
58 // and persists that to user list. Also links this user identified by | |
59 // |sync_user_id| to manager with a |manager_id|. | |
60 // Returns created user, or existing user if there already | |
61 // was locally managed user with such display name. | |
62 // TODO(antrim): Refactor into a single struct to have only 1 getter. | |
63 virtual const User* CreateUserRecord( | |
64 const std::string& manager_id, | |
65 const std::string& local_user_id, | |
66 const std::string& sync_user_id, | |
67 const base::string16& display_name) = 0; | |
68 | |
69 // Generates unique user ID for supervised user. | |
70 virtual std::string GenerateUserId() = 0; | |
71 | |
72 // Returns the supervised user with the given |display_name| if found in | |
73 // the persistent list. Returns |NULL| otherwise. | |
74 virtual const User* FindByDisplayName( | |
75 const base::string16& display_name) const = 0; | |
76 | |
77 // Returns the supervised user with the given |sync_id| if found in | |
78 // the persistent list. Returns |NULL| otherwise. | |
79 virtual const User* FindBySyncId(const std::string& sync_id) const = 0; | |
80 | |
81 // Returns sync_user_id for supervised user with |user_id| or empty string if | |
82 // such user is not found or it doesn't have user_id defined. | |
83 virtual std::string GetUserSyncId(const std::string& user_id) const = 0; | |
84 | |
85 // Returns the display name for manager of user |user_id| if it is known | |
86 // (was previously set by a |SaveUserDisplayName| call). | |
87 // Otherwise, returns a manager id. | |
88 virtual base::string16 GetManagerDisplayName( | |
89 const std::string& user_id) const = 0; | |
90 | |
91 // Returns the user id for manager of user |user_id| if it is known (user is | |
92 // actually a managed user). | |
93 // Otherwise, returns an empty string. | |
94 virtual std::string GetManagerUserId(const std::string& user_id) const = 0; | |
95 | |
96 // Returns the display email for manager of user |user_id| if it is known | |
97 // (user is actually a managed user). | |
98 // Otherwise, returns an empty string. | |
99 virtual std::string GetManagerDisplayEmail(const std::string& user_id) | |
100 const = 0; | |
101 | |
102 // Create a record about starting supervised user creation transaction. | |
103 virtual void StartCreationTransaction(const base::string16& display_name) = 0; | |
104 | |
105 // Add user id to supervised user creation transaction record. | |
106 virtual void SetCreationTransactionUserId(const std::string& user_id) = 0; | |
107 | |
108 // Remove locally managed user creation transaction record. | |
109 virtual void CommitCreationTransaction() = 0; | |
110 | |
111 // Return object that handles specifics of supervised user authentication. | |
112 virtual SupervisedUserAuthentication* GetAuthentication() = 0; | |
113 | |
114 // Fill |result| with public password-specific data for |user_id| from Local | |
115 // State. | |
116 virtual void GetPasswordInformation(const std::string& user_id, | |
117 base::DictionaryValue* result) = 0; | |
118 | |
119 // Stores public password-specific data from |password_info| for |user_id| in | |
120 // Local State. | |
121 virtual void SetPasswordInformation( | |
122 const std::string& user_id, | |
123 const base::DictionaryValue* password_info) = 0; | |
124 | |
125 // Loads a sync oauth token in background, and passes it to callback. | |
126 virtual void LoadSupervisedUserToken(Profile* profile, | |
127 const LoadTokenCallback& callback) = 0; | |
128 | |
129 // Configures sync service with oauth token. | |
130 virtual void ConfigureSyncWithToken(Profile* profile, | |
131 const std::string& token) = 0; | |
132 | |
133 private: | |
134 DISALLOW_COPY_AND_ASSIGN(SupervisedUserManager); | |
135 }; | |
136 | |
137 } // namespace chromeos | |
138 | |
139 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_USER_MANAGER_H_ | |
OLD | NEW |