// 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. #include "chromeos/login/auth/user_context.h" #include "chromeos/login/user_names.h" namespace chromeos { UserContext::UserContext() : is_using_oauth_(true), auth_flow_(AUTH_FLOW_OFFLINE), user_type_(user_manager::USER_TYPE_REGULAR) { } UserContext::UserContext(const UserContext& other) : user_id_(other.user_id_), key_(other.key_), auth_code_(other.auth_code_), user_id_hash_(other.user_id_hash_), is_using_oauth_(other.is_using_oauth_), auth_flow_(other.auth_flow_), user_type_(other.user_type_), public_session_locale_(other.public_session_locale_), public_session_input_method_(other.public_session_input_method_) { } UserContext::UserContext(const std::string& user_id) : user_id_(login::CanonicalizeUserID(user_id)), is_using_oauth_(true), auth_flow_(AUTH_FLOW_OFFLINE), user_type_(user_manager::USER_TYPE_REGULAR) { } UserContext::UserContext(user_manager::UserType user_type, const std::string& user_id) : is_using_oauth_(true), auth_flow_(AUTH_FLOW_OFFLINE), user_type_(user_type) { if (user_type_ == user_manager::USER_TYPE_REGULAR) user_id_ = login::CanonicalizeUserID(user_id); else user_id_ = user_id; } UserContext::~UserContext() { } bool UserContext::operator==(const UserContext& context) const { return context.user_id_ == user_id_ && context.key_ == key_ && context.auth_code_ == auth_code_ && context.user_id_hash_ == user_id_hash_ && context.is_using_oauth_ == is_using_oauth_ && context.auth_flow_ == auth_flow_ && context.user_type_ == user_type_ && context.public_session_locale_ == public_session_locale_ && context.public_session_input_method_ == public_session_input_method_; } bool UserContext::operator!=(const UserContext& context) const { return !(*this == context); } const std::string& UserContext::GetUserID() const { return user_id_; } const Key* UserContext::GetKey() const { return &key_; } Key* UserContext::GetKey() { return &key_; } const std::string& UserContext::GetAuthCode() const { return auth_code_; } const std::string& UserContext::GetUserIDHash() const { return user_id_hash_; } bool UserContext::IsUsingOAuth() const { return is_using_oauth_; } UserContext::AuthFlow UserContext::GetAuthFlow() const { return auth_flow_; } user_manager::UserType UserContext::GetUserType() const { return user_type_; } const std::string& UserContext::GetPublicSessionLocale() const { return public_session_locale_; } const std::string& UserContext::GetPublicSessionInputMethod() const { return public_session_input_method_; } bool UserContext::HasCredentials() const { return (!user_id_.empty() && !key_.GetSecret().empty()) || !auth_code_.empty(); } void UserContext::SetUserID(const std::string& user_id) { user_id_ = login::CanonicalizeUserID(user_id); } void UserContext::SetKey(const Key& key) { key_ = key; } void UserContext::SetAuthCode(const std::string& auth_code) { auth_code_ = auth_code; } void UserContext::SetUserIDHash(const std::string& user_id_hash) { user_id_hash_ = user_id_hash; } void UserContext::SetIsUsingOAuth(bool is_using_oauth) { is_using_oauth_ = is_using_oauth; } void UserContext::SetAuthFlow(AuthFlow auth_flow) { auth_flow_ = auth_flow; } void UserContext::SetUserType(user_manager::UserType user_type) { user_type_ = user_type; } void UserContext::SetPublicSessionLocale(const std::string& locale) { public_session_locale_ = locale; } void UserContext::SetPublicSessionInputMethod(const std::string& input_method) { public_session_input_method_ = input_method; } void UserContext::ClearSecrets() { key_.ClearSecret(); auth_code_.clear(); } } // namespace chromeos