| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_USER_MANAGER_H_ |
| #define CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_USER_MANAGER_H_ |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/strings/string16.h" |
| |
| class PrefRegistrySimple; |
| |
| namespace chromeos { |
| |
| class User; |
| |
| // Base class for SupervisedUserManagerImpl - provides a mechanism for getting |
| // and setting specific values for supervised users, as well as additional |
| // lookup methods that make sense only for supervised users. |
| class SupervisedUserManager { |
| public: |
| // Registers user manager preferences. |
| static void RegisterPrefs(PrefRegistrySimple* registry); |
| |
| SupervisedUserManager() {} |
| virtual ~SupervisedUserManager() {} |
| |
| // Creates supervised user with given |display_name| and |local_user_id| |
| // and persists that to user list. Also links this user identified by |
| // |sync_user_id| to manager with a |manager_id|. |
| // Returns created user, or existing user if there already |
| // was locally managed user with such display name. |
| // TODO(antrim): Refactor into a single struct to have only 1 getter. |
| virtual const User* CreateUserRecord( |
| const std::string& manager_id, |
| const std::string& local_user_id, |
| const std::string& sync_user_id, |
| const string16& display_name) = 0; |
| |
| // Generates unique user ID for supervised user. |
| virtual std::string GenerateUserId() = 0; |
| |
| // Returns the supervised user with the given |display_name| if found in |
| // the persistent list. Returns |NULL| otherwise. |
| virtual const User* FindByDisplayName(const string16& display_name) const = 0; |
| |
| // Returns the supervised user with the given |sync_id| if found in |
| // the persistent list. Returns |NULL| otherwise. |
| virtual const User* FindBySyncId(const std::string& sync_id) const = 0; |
| |
| // Returns sync_user_id for supervised user with |user_id| or empty string if |
| // such user is not found or it doesn't have user_id defined. |
| virtual std::string GetUserSyncId(const std::string& user_id) const = 0; |
| |
| // Returns the display name for manager of user |user_id| if it is known |
| // (was previously set by a |SaveUserDisplayName| call). |
| // Otherwise, returns a manager id. |
| virtual string16 GetManagerDisplayName(const std::string& user_id) const = 0; |
| |
| // Returns the user id for manager of user |user_id| if it is known (user is |
| // actually a managed user). |
| // Otherwise, returns an empty string. |
| virtual std::string GetManagerUserId(const std::string& user_id) const = 0; |
| |
| // Returns the display email for manager of user |user_id| if it is known |
| // (user is actually a managed user). |
| // Otherwise, returns an empty string. |
| virtual std::string GetManagerDisplayEmail(const std::string& user_id) |
| const = 0; |
| |
| // Create a record about starting supervised user creation transaction. |
| virtual void StartCreationTransaction(const string16& display_name) = 0; |
| |
| // Add user id to supervised user creation transaction record. |
| virtual void SetCreationTransactionUserId(const std::string& user_id) = 0; |
| |
| // Remove locally managed user creation transaction record. |
| virtual void CommitCreationTransaction() = 0; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(SupervisedUserManager); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SUPERVISED_USER_MANAGER_H_ |