[NaCl SDK]: use standard __BEGIN_DECLS macros in sys/select.h
[chromium-blink-merge.git] / chromeos / login / auth / user_context.cc
blob31113f1311b51007ed890e72b35be4721a3a3be7
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.
5 #include "chromeos/login/auth/user_context.h"
6 #include "chromeos/login/user_names.h"
8 namespace chromeos {
10 UserContext::UserContext()
11 : is_using_oauth_(true),
12 auth_flow_(AUTH_FLOW_OFFLINE),
13 user_type_(user_manager::USER_TYPE_REGULAR) {
16 UserContext::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_) {
28 UserContext::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) {
35 UserContext::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;
46 UserContext::~UserContext() {
49 bool 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_;
61 bool UserContext::operator!=(const UserContext& context) const {
62 return !(*this == context);
65 const std::string& UserContext::GetUserID() const {
66 return user_id_;
69 const Key* UserContext::GetKey() const {
70 return &key_;
73 Key* UserContext::GetKey() {
74 return &key_;
77 const std::string& UserContext::GetAuthCode() const {
78 return auth_code_;
81 const std::string& UserContext::GetUserIDHash() const {
82 return user_id_hash_;
85 bool UserContext::IsUsingOAuth() const {
86 return is_using_oauth_;
89 UserContext::AuthFlow UserContext::GetAuthFlow() const {
90 return auth_flow_;
93 user_manager::UserType UserContext::GetUserType() const {
94 return user_type_;
97 const std::string& UserContext::GetPublicSessionLocale() const {
98 return public_session_locale_;
101 const std::string& UserContext::GetPublicSessionInputMethod() const {
102 return public_session_input_method_;
105 bool UserContext::HasCredentials() const {
106 return (!user_id_.empty() && !key_.GetSecret().empty()) ||
107 !auth_code_.empty();
110 void UserContext::SetUserID(const std::string& user_id) {
111 user_id_ = login::CanonicalizeUserID(user_id);
114 void UserContext::SetKey(const Key& key) {
115 key_ = key;
118 void UserContext::SetAuthCode(const std::string& auth_code) {
119 auth_code_ = auth_code;
122 void UserContext::SetUserIDHash(const std::string& user_id_hash) {
123 user_id_hash_ = user_id_hash;
126 void UserContext::SetIsUsingOAuth(bool is_using_oauth) {
127 is_using_oauth_ = is_using_oauth;
130 void UserContext::SetAuthFlow(AuthFlow auth_flow) {
131 auth_flow_ = auth_flow;
134 void UserContext::SetUserType(user_manager::UserType user_type) {
135 user_type_ = user_type;
138 void UserContext::SetPublicSessionLocale(const std::string& locale) {
139 public_session_locale_ = locale;
142 void UserContext::SetPublicSessionInputMethod(const std::string& input_method) {
143 public_session_input_method_ = input_method;
146 void UserContext::ClearSecrets() {
147 key_.ClearSecret();
148 auth_code_.clear();
151 } // namespace chromeos