| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ | 5 #ifndef CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| 6 #define CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ | 6 #define CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 } | 24 } |
| 25 | 25 |
| 26 namespace policy { | 26 namespace policy { |
| 27 class WildcardLoginChecker; | 27 class WildcardLoginChecker; |
| 28 } | 28 } |
| 29 | 29 |
| 30 namespace content { | 30 namespace content { |
| 31 class BrowserContext; | 31 class BrowserContext; |
| 32 } | 32 } |
| 33 | 33 |
| 34 namespace user_manager { |
| 35 class UserID; |
| 36 } // namespace user_manager |
| 37 |
| 34 namespace chromeos { | 38 namespace chromeos { |
| 35 | 39 |
| 36 // This class encapsulates sign in operations. | 40 // This class encapsulates sign in operations. |
| 37 // Sign in is performed in a way that offline auth is executed first. | 41 // Sign in is performed in a way that offline auth is executed first. |
| 38 // Once offline auth is OK - user homedir is mounted, UI is launched. | 42 // Once offline auth is OK - user homedir is mounted, UI is launched. |
| 39 // At this point LoginPerformer |delegate_| is destroyed and it releases | 43 // At this point LoginPerformer |delegate_| is destroyed and it releases |
| 40 // LP instance ownership. LP waits for online login result. | 44 // LP instance ownership. LP waits for online login result. |
| 41 // If auth is succeeded, cookie fetcher is executed, LP instance deletes itself. | 45 // If auth is succeeded, cookie fetcher is executed, LP instance deletes itself. |
| 42 // | 46 // |
| 43 // If |delegate_| is not NULL it will handle error messages, password input. | 47 // If |delegate_| is not NULL it will handle error messages, password input. |
| 44 class CHROMEOS_EXPORT LoginPerformer : public AuthStatusConsumer, | 48 class CHROMEOS_EXPORT LoginPerformer : public AuthStatusConsumer, |
| 45 public OnlineAttemptHost::Delegate { | 49 public OnlineAttemptHost::Delegate { |
| 46 public: | 50 public: |
| 47 typedef enum AuthorizationMode { | 51 typedef enum AuthorizationMode { |
| 48 // Authorization performed internally by Chrome. | 52 // Authorization performed internally by Chrome. |
| 49 AUTH_MODE_INTERNAL, | 53 AUTH_MODE_INTERNAL, |
| 50 // Authorization performed by an extension. | 54 // Authorization performed by an extension. |
| 51 AUTH_MODE_EXTENSION | 55 AUTH_MODE_EXTENSION |
| 52 } AuthorizationMode; | 56 } AuthorizationMode; |
| 53 | 57 |
| 54 // Delegate class to get notifications from the LoginPerformer. | 58 // Delegate class to get notifications from the LoginPerformer. |
| 55 class Delegate : public AuthStatusConsumer { | 59 class Delegate : public AuthStatusConsumer { |
| 56 public: | 60 public: |
| 57 ~Delegate() override {} | 61 ~Delegate() override {} |
| 58 virtual void WhiteListCheckFailed(const std::string& email) = 0; | 62 virtual void WhiteListCheckFailed(const user_manager::UserID& user_id) = 0; |
| 59 virtual void PolicyLoadFailed() = 0; | 63 virtual void PolicyLoadFailed() = 0; |
| 60 virtual void OnOnlineChecked(const std::string& email, bool success) = 0; | 64 virtual void OnOnlineChecked(const user_manager::UserID& user_id, bool succe
ss) = 0; |
| 61 }; | 65 }; |
| 62 | 66 |
| 63 LoginPerformer(scoped_refptr<base::TaskRunner> task_runner, | 67 LoginPerformer(scoped_refptr<base::TaskRunner> task_runner, |
| 64 Delegate* delegate, | 68 Delegate* delegate, |
| 65 bool disable_client_login); | 69 bool disable_client_login); |
| 66 ~LoginPerformer() override; | 70 ~LoginPerformer() override; |
| 67 | 71 |
| 68 // Performs a login for |user_context|. | 72 // Performs a login for |user_context|. |
| 69 // If auth_mode is AUTH_MODE_EXTENSION, there are no further auth checks, | 73 // If auth_mode is AUTH_MODE_EXTENSION, there are no further auth checks, |
| 70 // AUTH_MODE_INTERNAL will perform auth checks. | 74 // AUTH_MODE_INTERNAL will perform auth checks. |
| 71 void PerformLogin(const UserContext& user_context, | 75 void PerformLogin(const UserContext& user_context, |
| 72 AuthorizationMode auth_mode); | 76 AuthorizationMode auth_mode); |
| 73 | 77 |
| 74 // Performs supervised user login with a given |user_context|. | 78 // Performs supervised user login with a given |user_context|. |
| 75 void LoginAsSupervisedUser(const UserContext& user_context); | 79 void LoginAsSupervisedUser(const UserContext& user_context); |
| 76 | 80 |
| 77 // Performs actions to prepare guest mode login. | 81 // Performs actions to prepare guest mode login. |
| 78 void LoginOffTheRecord(); | 82 void LoginOffTheRecord(); |
| 79 | 83 |
| 80 // Performs public session login with a given |user_context|. | 84 // Performs public session login with a given |user_context|. |
| 81 void LoginAsPublicSession(const UserContext& user_context); | 85 void LoginAsPublicSession(const UserContext& user_context); |
| 82 | 86 |
| 83 // Performs a login into the kiosk mode account with |app_user_id|. | 87 // Performs a login into the kiosk mode account with |app_user_id|. |
| 84 void LoginAsKioskAccount(const std::string& app_user_id, | 88 void LoginAsKioskAccount(const user_manager::UserID& app_user_id, |
| 85 bool use_guest_mount); | 89 bool use_guest_mount); |
| 86 | 90 |
| 87 // AuthStatusConsumer implementation: | 91 // AuthStatusConsumer implementation: |
| 88 void OnAuthFailure(const AuthFailure& error) override; | 92 void OnAuthFailure(const AuthFailure& error) override; |
| 89 void OnAuthSuccess(const UserContext& user_context) override; | 93 void OnAuthSuccess(const UserContext& user_context) override; |
| 90 void OnOffTheRecordAuthSuccess() override; | 94 void OnOffTheRecordAuthSuccess() override; |
| 91 void OnPasswordChangeDetected() override; | 95 void OnPasswordChangeDetected() override; |
| 92 | 96 |
| 93 // Migrates cryptohome using |old_password| specified. | 97 // Migrates cryptohome using |old_password| specified. |
| 94 void RecoverEncryptedData(const std::string& old_password); | 98 void RecoverEncryptedData(const std::string& old_password); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 112 int password_changed_callback_count() { | 116 int password_changed_callback_count() { |
| 113 return password_changed_callback_count_; | 117 return password_changed_callback_count_; |
| 114 } | 118 } |
| 115 | 119 |
| 116 void set_delegate(Delegate* delegate) { delegate_ = delegate; } | 120 void set_delegate(Delegate* delegate) { delegate_ = delegate; } |
| 117 | 121 |
| 118 AuthorizationMode auth_mode() const { return auth_mode_; } | 122 AuthorizationMode auth_mode() const { return auth_mode_; } |
| 119 | 123 |
| 120 protected: | 124 protected: |
| 121 // Implements OnlineAttemptHost::Delegate. | 125 // Implements OnlineAttemptHost::Delegate. |
| 122 void OnChecked(const std::string& user_id, bool success) override; | 126 void OnChecked(const user_manager::UserID& user_id, bool success) override; |
| 123 | 127 |
| 124 // Platform-dependant methods to be implemented by concrete class. | 128 // Platform-dependant methods to be implemented by concrete class. |
| 125 | 129 |
| 126 // Run trusted check for a platform. If trusted check have to be performed | 130 // Run trusted check for a platform. If trusted check have to be performed |
| 127 // asynchronously, |false| will be returned, and either delegate's | 131 // asynchronously, |false| will be returned, and either delegate's |
| 128 // PolicyLoadFailed() or |callback| will be called upon actual check. | 132 // PolicyLoadFailed() or |callback| will be called upon actual check. |
| 129 virtual bool RunTrustedCheck(const base::Closure& callback) = 0; | 133 virtual bool RunTrustedCheck(const base::Closure& callback) = 0; |
| 130 | 134 |
| 131 // Check if user is allowed to sign in on device. |wildcard_match| will | 135 // Check if user is allowed to sign in on device. |wildcard_match| will |
| 132 // contain additional information whether this user is explicitly listed or | 136 // contain additional information whether this user is explicitly listed or |
| 133 // not (may be relevant for extension-based sign-in). | 137 // not (may be relevant for extension-based sign-in). |
| 134 virtual bool IsUserWhitelisted(const std::string& user_id, | 138 virtual bool IsUserWhitelisted(const user_manager::UserID& user_id, |
| 135 bool* wildcard_match) = 0; | 139 bool* wildcard_match) = 0; |
| 136 | 140 |
| 137 // This method should run addional online check if user can sign in on device. | 141 // This method should run addional online check if user can sign in on device. |
| 138 // Either |success_callback| or |failure_callback| should be called upon this | 142 // Either |success_callback| or |failure_callback| should be called upon this |
| 139 // check. | 143 // check. |
| 140 virtual void RunOnlineWhitelistCheck( | 144 virtual void RunOnlineWhitelistCheck( |
| 141 const std::string& user_id, | 145 const user_manager::UserID& user_id, |
| 142 bool wildcard_match, | 146 bool wildcard_match, |
| 143 const std::string& refresh_token, | 147 const std::string& refresh_token, |
| 144 const base::Closure& success_callback, | 148 const base::Closure& success_callback, |
| 145 const base::Closure& failure_callback) = 0; | 149 const base::Closure& failure_callback) = 0; |
| 146 | 150 |
| 147 // Supervised users-related methods. | 151 // Supervised users-related methods. |
| 148 | 152 |
| 149 // Check if supervised users are allowed on this device. | 153 // Check if supervised users are allowed on this device. |
| 150 virtual bool AreSupervisedUsersAllowed() = 0; | 154 virtual bool AreSupervisedUsersAllowed() = 0; |
| 151 | 155 |
| 152 // Check which authenticator should be used for supervised user. | 156 // Check which authenticator should be used for supervised user. |
| 153 virtual bool UseExtendedAuthenticatorForSupervisedUser( | 157 virtual bool UseExtendedAuthenticatorForSupervisedUser( |
| 154 const UserContext& user_context) = 0; | 158 const UserContext& user_context) = 0; |
| 155 | 159 |
| 156 // Probably transform supervised user's authentication key. | 160 // Probably transform supervised user's authentication key. |
| 157 virtual UserContext TransformSupervisedKey(const UserContext& context) = 0; | 161 virtual UserContext TransformSupervisedKey(const UserContext& context) = 0; |
| 158 | 162 |
| 159 // Set up sign-in flow for supervised user. | 163 // Set up sign-in flow for supervised user. |
| 160 virtual void SetupSupervisedUserFlow(const std::string& user_id) = 0; | 164 virtual void SetupSupervisedUserFlow(const user_manager::UserID& user_id) = 0; |
| 161 | 165 |
| 162 // Set up sign-in flow for Easy Unlock. | 166 // Set up sign-in flow for Easy Unlock. |
| 163 virtual void SetupEasyUnlockUserFlow(const std::string& user_id) = 0; | 167 virtual void SetupEasyUnlockUserFlow(const user_manager::UserID& user_id) = 0; |
| 164 | 168 |
| 165 // Run policy check for |user_id|. If something is wrong, delegate's | 169 // Run policy check for |user_id|. If something is wrong, delegate's |
| 166 // PolicyLoadFailed is called. | 170 // PolicyLoadFailed is called. |
| 167 virtual bool CheckPolicyForUser(const std::string& user_id) = 0; | 171 virtual bool CheckPolicyForUser(const user_manager::UserID& user_id) = 0; |
| 168 | 172 |
| 169 // Look up browser context to use during signin. | 173 // Look up browser context to use during signin. |
| 170 virtual content::BrowserContext* GetSigninContext() = 0; | 174 virtual content::BrowserContext* GetSigninContext() = 0; |
| 171 | 175 |
| 172 // Get RequestContext used for sign in. | 176 // Get RequestContext used for sign in. |
| 173 virtual net::URLRequestContextGetter* GetSigninRequestContext() = 0; | 177 virtual net::URLRequestContextGetter* GetSigninRequestContext() = 0; |
| 174 | 178 |
| 175 // Create authenticator implementation. | 179 // Create authenticator implementation. |
| 176 virtual scoped_refptr<Authenticator> CreateAuthenticator() = 0; | 180 virtual scoped_refptr<Authenticator> CreateAuthenticator() = 0; |
| 177 | 181 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // TODO(antrim): remove once we got rid of /ClientLogin. | 234 // TODO(antrim): remove once we got rid of /ClientLogin. |
| 231 bool disable_client_login_; | 235 bool disable_client_login_; |
| 232 | 236 |
| 233 base::WeakPtrFactory<LoginPerformer> weak_factory_; | 237 base::WeakPtrFactory<LoginPerformer> weak_factory_; |
| 234 DISALLOW_COPY_AND_ASSIGN(LoginPerformer); | 238 DISALLOW_COPY_AND_ASSIGN(LoginPerformer); |
| 235 }; | 239 }; |
| 236 | 240 |
| 237 } // namespace chromeos | 241 } // namespace chromeos |
| 238 | 242 |
| 239 #endif // CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ | 243 #endif // CHROMEOS_LOGIN_AUTH_LOGIN_PERFORMER_H_ |
| OLD | NEW |