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 3// found in the LICENSE file. 4 5#include "chromeos/login/auth/user_context.h" 6#include "chromeos/login/user_names.h" 7 8namespace chromeos { 9 10UserContext::UserContext() 11 : is_using_oauth_(true), 12 auth_flow_(AUTH_FLOW_OFFLINE), 13 user_type_(user_manager::USER_TYPE_REGULAR) { 14} 15 16UserContext::UserContext(const UserContext& other) 17 : user_id_(other.user_id_), 18 key_(other.key_), 19 auth_code_(other.auth_code_), 20 user_id_hash_(other.user_id_hash_), 21 is_using_oauth_(other.is_using_oauth_), 22 auth_flow_(other.auth_flow_), 23 user_type_(other.user_type_), 24 public_session_locale_(other.public_session_locale_), 25 public_session_input_method_(other.public_session_input_method_) { 26} 27 28UserContext::UserContext(const std::string& user_id) 29 : user_id_(login::CanonicalizeUserID(user_id)), 30 is_using_oauth_(true), 31 auth_flow_(AUTH_FLOW_OFFLINE), 32 user_type_(user_manager::USER_TYPE_REGULAR) { 33} 34 35UserContext::UserContext(user_manager::UserType user_type, 36 const std::string& user_id) 37 : is_using_oauth_(true), 38 auth_flow_(AUTH_FLOW_OFFLINE), 39 user_type_(user_type) { 40 if (user_type_ == user_manager::USER_TYPE_REGULAR) 41 user_id_ = login::CanonicalizeUserID(user_id); 42 else 43 user_id_ = user_id; 44} 45 46UserContext::~UserContext() { 47} 48 49bool UserContext::operator==(const UserContext& context) const { 50 return context.user_id_ == user_id_ && 51 context.key_ == key_ && 52 context.auth_code_ == auth_code_ && 53 context.user_id_hash_ == user_id_hash_ && 54 context.is_using_oauth_ == is_using_oauth_ && 55 context.auth_flow_ == auth_flow_ && 56 context.user_type_ == user_type_ && 57 context.public_session_locale_ == public_session_locale_ && 58 context.public_session_input_method_ == public_session_input_method_; 59} 60 61bool UserContext::operator!=(const UserContext& context) const { 62 return !(*this == context); 63} 64 65const std::string& UserContext::GetUserID() const { 66 return user_id_; 67} 68 69const Key* UserContext::GetKey() const { 70 return &key_; 71} 72 73Key* UserContext::GetKey() { 74 return &key_; 75} 76 77const std::string& UserContext::GetAuthCode() const { 78 return auth_code_; 79} 80 81const std::string& UserContext::GetUserIDHash() const { 82 return user_id_hash_; 83} 84 85bool UserContext::IsUsingOAuth() const { 86 return is_using_oauth_; 87} 88 89UserContext::AuthFlow UserContext::GetAuthFlow() const { 90 return auth_flow_; 91} 92 93user_manager::UserType UserContext::GetUserType() const { 94 return user_type_; 95} 96 97const std::string& UserContext::GetPublicSessionLocale() const { 98 return public_session_locale_; 99} 100 101const std::string& UserContext::GetPublicSessionInputMethod() const { 102 return public_session_input_method_; 103} 104 105bool UserContext::HasCredentials() const { 106 return (!user_id_.empty() && !key_.GetSecret().empty()) || 107 !auth_code_.empty(); 108} 109 110void UserContext::SetUserID(const std::string& user_id) { 111 user_id_ = login::CanonicalizeUserID(user_id); 112} 113 114void UserContext::SetKey(const Key& key) { 115 key_ = key; 116} 117 118void UserContext::SetAuthCode(const std::string& auth_code) { 119 auth_code_ = auth_code; 120} 121 122void UserContext::SetUserIDHash(const std::string& user_id_hash) { 123 user_id_hash_ = user_id_hash; 124} 125 126void UserContext::SetIsUsingOAuth(bool is_using_oauth) { 127 is_using_oauth_ = is_using_oauth; 128} 129 130void UserContext::SetAuthFlow(AuthFlow auth_flow) { 131 auth_flow_ = auth_flow; 132} 133 134void UserContext::SetUserType(user_manager::UserType user_type) { 135 user_type_ = user_type; 136} 137 138void UserContext::SetPublicSessionLocale(const std::string& locale) { 139 public_session_locale_ = locale; 140} 141 142void UserContext::SetPublicSessionInputMethod(const std::string& input_method) { 143 public_session_input_method_ = input_method; 144} 145 146void UserContext::ClearSecrets() { 147 key_.ClearSecret(); 148 auth_code_.clear(); 149} 150 151} // namespace chromeos 152