Index: chrome/browser/chromeos/login/auth/user_context.h |
diff --git a/chrome/browser/chromeos/login/auth/user_context.h b/chrome/browser/chromeos/login/auth/user_context.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8617ddc475b27d4e9f4524819545da20d12e4bc7 |
--- /dev/null |
+++ b/chrome/browser/chromeos/login/auth/user_context.h |
@@ -0,0 +1,70 @@ |
+// Copyright 2014 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_AUTH_USER_CONTEXT_H_ |
+#define CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_USER_CONTEXT_H_ |
+ |
+#include <string> |
+ |
+namespace chromeos { |
+ |
+// Information that is passed around while authentication is in progress. The |
+// credentials may consist of a |user_id|, |password| pair or a GAIA |
+// |auth_code|. The |user_id_hash| is used to locate the user's home directory |
+// mount point for the user. It is set when the mount has been completed. |
+class UserContext { |
+ public: |
+ // The authentication flow used during sign-in. |
+ enum AuthFlow { |
+ // Online authentication against GAIA. GAIA did not redirect to a SAML IdP. |
+ AUTH_FLOW_GAIA_WITHOUT_SAML, |
+ // Online authentication against GAIA. GAIA redirected to a SAML IdP. |
+ AUTH_FLOW_GAIA_WITH_SAML, |
+ // Offline authentication against a cached key. |
+ AUTH_FLOW_OFFLINE |
+ }; |
+ |
+ UserContext(); |
+ UserContext(const UserContext& other); |
+ explicit UserContext(const std::string& user_id); |
+ ~UserContext(); |
+ |
+ bool operator==(const UserContext& context) const; |
+ |
+ const std::string& GetUserID() const; |
+ const std::string& GetPassword() const; |
+ bool DoesNeedPasswordHashing() const; |
+ const std::string& GetKeyLabel() const; |
+ const std::string& GetAuthCode() const; |
+ const std::string& GetUserIDHash() const; |
+ bool IsUsingOAuth() const; |
+ AuthFlow GetAuthFlow() const; |
+ |
+ bool HasCredentials() const; |
+ |
+ void SetUserID(const std::string& user_id); |
+ void SetPassword(const std::string& password); |
+ void SetDoesNeedPasswordHashing(bool does_need_password_hashing); |
+ void SetKeyLabel(const std::string& key_label); |
+ void SetAuthCode(const std::string& auth_code); |
+ void SetUserIDHash(const std::string& user_id_hash); |
+ void SetIsUsingOAuth(bool is_using_oauth); |
+ void SetAuthFlow(AuthFlow auth_flow); |
+ |
+ void ClearSecrets(); |
+ |
+ private: |
+ std::string user_id_; |
+ std::string password_; |
+ bool does_need_password_hashing_; |
+ std::string key_label_; |
+ std::string auth_code_; |
+ std::string user_id_hash_; |
+ bool is_using_oauth_; |
+ AuthFlow auth_flow_; |
+}; |
+ |
+} // namespace chromeos |
+ |
+#endif // CHROME_BROWSER_CHROMEOS_LOGIN_AUTH_USER_CONTEXT_H_ |