Home | History | Annotate | Download | only in auth
      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/auth_attempt_state.h"
      6 
      7 #include <string>
      8 
      9 #include "google_apis/gaia/gaia_auth_consumer.h"
     10 #include "google_apis/gaia/gaia_auth_fetcher.h"
     11 
     12 namespace chromeos {
     13 
     14 AuthAttemptState::AuthAttemptState(const UserContext& user_context,
     15                                    user_manager::UserType user_type,
     16                                    bool unlock,
     17                                    bool online_complete,
     18                                    bool user_is_new)
     19     : user_context(user_context),
     20       user_type(user_type),
     21       unlock(unlock),
     22       online_complete_(online_complete),
     23       online_outcome_(online_complete ? AuthFailure::UNLOCK_FAILED
     24                                       : AuthFailure::NONE),
     25       hosted_policy_(GaiaAuthFetcher::HostedAccountsAllowed),
     26       is_first_time_user_(user_is_new),
     27       cryptohome_complete_(false),
     28       cryptohome_outcome_(false),
     29       cryptohome_code_(cryptohome::MOUNT_ERROR_NONE),
     30       username_hash_obtained_(true),
     31       username_hash_valid_(true) {
     32 }
     33 
     34 AuthAttemptState::~AuthAttemptState() {
     35 }
     36 
     37 void AuthAttemptState::RecordOnlineLoginStatus(const AuthFailure& outcome) {
     38   online_complete_ = true;
     39   online_outcome_ = outcome;
     40   // We're either going to not try again, or try again with HOSTED
     41   // accounts not allowed, so just set this here.
     42   DisableHosted();
     43 }
     44 
     45 void AuthAttemptState::DisableHosted() {
     46   hosted_policy_ = GaiaAuthFetcher::HostedAccountsNotAllowed;
     47 }
     48 
     49 void AuthAttemptState::RecordCryptohomeStatus(
     50     bool cryptohome_outcome,
     51     cryptohome::MountError cryptohome_code) {
     52   cryptohome_complete_ = true;
     53   cryptohome_outcome_ = cryptohome_outcome;
     54   cryptohome_code_ = cryptohome_code;
     55 }
     56 
     57 void AuthAttemptState::RecordUsernameHash(const std::string& username_hash) {
     58   user_context.SetUserIDHash(username_hash);
     59   username_hash_obtained_ = true;
     60   username_hash_valid_ = true;
     61 }
     62 
     63 void AuthAttemptState::RecordUsernameHashFailed() {
     64   username_hash_obtained_ = true;
     65   username_hash_valid_ = false;
     66 }
     67 
     68 void AuthAttemptState::UsernameHashRequested() {
     69   username_hash_obtained_ = false;
     70 }
     71 
     72 void AuthAttemptState::ResetCryptohomeStatus() {
     73   cryptohome_complete_ = false;
     74   cryptohome_outcome_ = false;
     75   cryptohome_code_ = cryptohome::MOUNT_ERROR_NONE;
     76 }
     77 
     78 bool AuthAttemptState::online_complete() {
     79   return online_complete_;
     80 }
     81 
     82 const AuthFailure& AuthAttemptState::online_outcome() {
     83   return online_outcome_;
     84 }
     85 
     86 bool AuthAttemptState::is_first_time_user() {
     87   return is_first_time_user_;
     88 }
     89 
     90 GaiaAuthFetcher::HostedAccountsSetting AuthAttemptState::hosted_policy() {
     91   return hosted_policy_;
     92 }
     93 
     94 bool AuthAttemptState::cryptohome_complete() {
     95   return cryptohome_complete_;
     96 }
     97 
     98 bool AuthAttemptState::cryptohome_outcome() {
     99   return cryptohome_outcome_;
    100 }
    101 
    102 cryptohome::MountError AuthAttemptState::cryptohome_code() {
    103   return cryptohome_code_;
    104 }
    105 
    106 bool AuthAttemptState::username_hash_obtained() {
    107   return username_hash_obtained_;
    108 }
    109 
    110 bool AuthAttemptState::username_hash_valid() {
    111   return username_hash_obtained_;
    112 }
    113 
    114 }  // namespace chromeos
    115