Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1516)

Unified Diff: chrome/browser/chromeos/login/existing_user_controller.cc

Issue 1165323004: We should use UserID object to identify users instead of username. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/existing_user_controller.cc
diff --git a/chrome/browser/chromeos/login/existing_user_controller.cc b/chrome/browser/chromeos/login/existing_user_controller.cc
index 9866456dd4e0d92c43499d2566ea2e3edf68635e..342141a17fe9660c1fcdee04d7aa7c6bfb506bd5 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller.cc
@@ -64,6 +64,7 @@
#include "components/policy/core/common/policy_map.h"
#include "components/policy/core/common/policy_service.h"
#include "components/policy/core/common/policy_types.h"
+#include "components/user_manager/user_id.h"
#include "components/user_manager/user_manager.h"
#include "components/user_manager/user_type.h"
#include "content/public/browser/browser_thread.h"
@@ -152,13 +153,16 @@ ExistingUserController* ExistingUserController::current_controller_ = NULL;
// ExistingUserController, public:
ExistingUserController::ExistingUserController(LoginDisplayHost* host)
- : auth_status_consumer_(NULL),
+ : public_session_auto_login_user_id_(std::string(), std::string()),
+ auth_status_consumer_(NULL),
+ last_login_attempt_user_id_(std::string(), std::string()),
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 EmptyUserID() here and above?
host_(host),
login_display_(host_->CreateLoginDisplay(this)),
num_login_attempts_(0),
cros_settings_(CrosSettings::Get()),
offline_failed_(false),
is_login_in_progress_(false),
+ online_succeeded_for_(std::string(), std::string()),
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 EmptyUserID()?
password_changed_(false),
auth_mode_(LoginPerformer::AUTH_MODE_EXTENSION),
signin_screen_ready_(false),
@@ -229,7 +233,7 @@ void ExistingUserController::UpdateLoginDisplay(
(*it)->GetType() != user_manager::USER_TYPE_SUPERVISED ||
user_manager::UserManager::Get()->AreSupervisedUsersAllowed();
bool meets_whitelist_requirements =
- CrosSettings::IsWhitelisted((*it)->email(), NULL) ||
+ CrosSettings::IsWhitelisted((*it)->GetUserID(), NULL) ||
!(*it)->HasGaiaAccount();
// Public session accounts are always shown on login screen.
@@ -330,7 +334,7 @@ void ExistingUserController::CreateAccount() {
content::RecordAction(base::UserMetricsAction("Login.CreateAccount"));
guest_mode_url_ = google_util::AppendGoogleLocaleParam(
GURL(kCreateAccountURL), g_browser_process->GetApplicationLocale());
- Login(UserContext(user_manager::USER_TYPE_GUEST, std::string()),
+ Login(UserContext(user_manager::USER_TYPE_GUEST, login::GetGuestUserID()),
SigninSpecifics());
}
@@ -383,7 +387,7 @@ void ExistingUserController::PerformLogin(
login_performer_.reset(new ChromeLoginPerformer(this));
}
- if (gaia::ExtractDomainName(user_context.GetUserID()) ==
+ if (gaia::ExtractDomainName(user_context.GetUserID().GetUserEmail()) ==
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 Maybe add chromeos::login::IsSupervisedUser(UserID
chromeos::login::kSupervisedUserDomain) {
login_performer_->LoginAsSupervisedUser(user_context);
} else {
@@ -517,7 +521,7 @@ void ExistingUserController::OnAuthFailure(const AuthFailure& failure) {
PerformLoginFinishedActions(false /* don't start public session timer */);
if (ChromeUserManager::Get()
- ->GetUserFlow(last_login_attempt_username_)
+ ->GetUserFlow(last_login_attempt_user_id_)
->HandleLoginFailure(failure)) {
return;
}
@@ -534,7 +538,7 @@ void ExistingUserController::OnAuthFailure(const AuthFailure& failure) {
ShowTPMError();
} else if (!online_succeeded_for_.empty()) {
ShowGaiaPasswordChanged(online_succeeded_for_);
- } else if (last_login_attempt_username_ == chromeos::login::kGuestUserName) {
+ } else if (last_login_attempt_user_id_ == chromeos::login::GetGuestUserID()) {
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 Maybe introduce chromeos::login::IsGuestUser(UserI
// Show no errors, just re-enable input.
login_display_->ClearAndEnablePassword();
StartPublicSessionAutoLoginTimer();
@@ -542,7 +546,7 @@ void ExistingUserController::OnAuthFailure(const AuthFailure& failure) {
// Check networking after trying to login in case user is
// cached locally or the local admin account.
bool is_known_user = user_manager::UserManager::Get()->IsKnownUser(
- last_login_attempt_username_);
+ last_login_attempt_user_id_);
if (!network_state_helper_->IsConnected()) {
if (is_known_user)
ShowError(IDS_LOGIN_ERROR_AUTHENTICATING, error);
@@ -567,7 +571,7 @@ void ExistingUserController::OnAuthFailure(const AuthFailure& failure) {
// Reset user flow to default, so that special flow will not affect next
// attempt.
- ChromeUserManager::Get()->ResetUserFlow(last_login_attempt_username_);
+ ChromeUserManager::Get()->ResetUserFlow(last_login_attempt_user_id_);
if (auth_status_consumer_)
auth_status_consumer_->OnAuthFailure(failure);
@@ -578,7 +582,7 @@ void ExistingUserController::OnAuthFailure(const AuthFailure& failure) {
// TODO(ginkage): Fix this case once crbug.com/469990 is ready.
/*
if (failure.reason() == AuthFailure::COULD_NOT_MOUNT_CRYPTOHOME) {
- RecordReauthReason(last_login_attempt_username_,
+ RecordReauthReason(last_login_attempt_user_id_,
ReauthReason::MISSING_CRYPTOHOME);
}
*/
@@ -644,7 +648,7 @@ void ExistingUserController::OnProfilePrepared(Profile* profile,
// TODO(nkostylev): Pass UserContext back crbug.com/424550
if (auth_status_consumer_) {
auth_status_consumer_->
- OnAuthSuccess(UserContext(last_login_attempt_username_));
+ OnAuthSuccess(UserContext(last_login_attempt_user_id_));
}
}
@@ -676,7 +680,7 @@ void ExistingUserController::OnPasswordChangeDetected() {
}
if (ChromeUserManager::Get()
- ->GetUserFlow(last_login_attempt_username_)
+ ->GetUserFlow(last_login_attempt_user_id_)
->HandlePasswordChangeDetected()) {
return;
}
@@ -691,7 +695,7 @@ void ExistingUserController::OnPasswordChangeDetected() {
// TODO(gspencer): We shouldn't have to erase stateful data when
// doing this. See http://crosbug.com/9115 http://crosbug.com/7792
login_display_->ShowPasswordChangedDialog(show_invalid_old_password_error,
- display_email_);
+ user_manager::UserID::FromUserEmail(display_email_));
if (auth_status_consumer_)
auth_status_consumer_->OnPasswordChangeDetected();
@@ -699,7 +703,7 @@ void ExistingUserController::OnPasswordChangeDetected() {
display_email_.clear();
}
-void ExistingUserController::WhiteListCheckFailed(const std::string& email) {
+void ExistingUserController::WhiteListCheckFailed(const user_manager::UserID& user_id) {
PerformLoginFinishedActions(true /* start public session timer */);
offline_failed_ = false;
@@ -709,11 +713,11 @@ void ExistingUserController::WhiteListCheckFailed(const std::string& email) {
if (g_browser_process->platform_part()
->browser_policy_connector_chromeos()
->IsEnterpriseManaged()) {
- ShowError(IDS_ENTERPRISE_LOGIN_ERROR_WHITELIST, email);
+ ShowError(IDS_ENTERPRISE_LOGIN_ERROR_WHITELIST, user_id.GetUserEmail());
} else {
- ShowError(IDS_LOGIN_ERROR_WHITELIST, email);
+ ShowError(IDS_LOGIN_ERROR_WHITELIST, user_id.GetUserEmail());
}
- login_display_->ShowSigninUI(email);
+ login_display_->ShowSigninUI(user_id);
}
if (auth_status_consumer_) {
@@ -732,13 +736,13 @@ void ExistingUserController::PolicyLoadFailed() {
display_email_.clear();
}
-void ExistingUserController::OnOnlineChecked(const std::string& username,
+void ExistingUserController::OnOnlineChecked(const user_manager::UserID& user_id,
bool success) {
- if (success && last_login_attempt_username_ == username) {
- online_succeeded_for_ = username;
+ if (success && last_login_attempt_user_id_ == user_id) {
+ online_succeeded_for_ = user_id;
// Wait for login attempt to end, if it hasn't yet.
if (offline_failed_ && !is_login_in_progress_)
- ShowGaiaPasswordChanged(username);
+ ShowGaiaPasswordChanged(user_id);
}
}
@@ -771,7 +775,7 @@ bool ExistingUserController::password_changed() const {
void ExistingUserController::LoginAsGuest() {
PerformPreLoginActions(UserContext(user_manager::USER_TYPE_GUEST,
- chromeos::login::kGuestUserName));
+ chromeos::login::GetGuestUserID()));
bool allow_guest;
cros_settings_->GetBoolean(kAccountsPrefAllowGuest, &allow_guest);
@@ -867,10 +871,10 @@ void ExistingUserController::LoginAsPublicSession(
LoginAsPublicSessionInternal(new_user_context);
}
-void ExistingUserController::LoginAsKioskApp(const std::string& app_id,
+void ExistingUserController::LoginAsKioskApp(const user_manager::UserID& user_id,
bool diagnostic_mode) {
const bool auto_start = false;
- host_->StartAppLaunch(app_id, diagnostic_mode, auto_start);
+ host_->StartAppLaunch(user_id.GetUserEmail(), diagnostic_mode, auto_start);
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 Please add ToDo that app id can be at some point b
}
void ExistingUserController::ConfigurePublicSessionAutoLogin() {
@@ -880,20 +884,20 @@ void ExistingUserController::ConfigurePublicSessionAutoLogin() {
const std::vector<policy::DeviceLocalAccount> device_local_accounts =
policy::GetDeviceLocalAccounts(cros_settings_);
- public_session_auto_login_username_.clear();
+ public_session_auto_login_user_id_.clear();
for (std::vector<policy::DeviceLocalAccount>::const_iterator
it = device_local_accounts.begin();
it != device_local_accounts.end(); ++it) {
if (it->account_id == auto_login_account_id) {
- public_session_auto_login_username_ = it->user_id;
+ public_session_auto_login_user_id_ = it->user_id;
break;
}
}
const user_manager::User* user = user_manager::UserManager::Get()->FindUser(
- public_session_auto_login_username_);
+ public_session_auto_login_user_id_);
if (!user || user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT)
- public_session_auto_login_username_.clear();
+ public_session_auto_login_user_id_.clear();
if (!cros_settings_->GetInteger(
kAccountsPrefDeviceLocalAccountAutoLoginDelay,
@@ -901,7 +905,7 @@ void ExistingUserController::ConfigurePublicSessionAutoLogin() {
public_session_auto_login_delay_ = 0;
}
- if (!public_session_auto_login_username_.empty())
+ if (!public_session_auto_login_user_id_.empty())
StartPublicSessionAutoLoginTimer();
else
StopPublicSessionAutoLoginTimer();
@@ -916,9 +920,9 @@ void ExistingUserController::ResetPublicSessionAutoLoginTimer() {
}
void ExistingUserController::OnPublicSessionAutoLoginTimerFire() {
- CHECK(signin_screen_ready_ && !public_session_auto_login_username_.empty());
+ CHECK(signin_screen_ready_ && !public_session_auto_login_user_id_.empty());
Login(UserContext(user_manager::USER_TYPE_PUBLIC_ACCOUNT,
- public_session_auto_login_username_),
+ public_session_auto_login_user_id_),
SigninSpecifics());
}
@@ -930,7 +934,7 @@ void ExistingUserController::StopPublicSessionAutoLoginTimer() {
void ExistingUserController::StartPublicSessionAutoLoginTimer() {
if (!signin_screen_ready_ ||
is_login_in_progress_ ||
- public_session_auto_login_username_.empty()) {
+ public_session_auto_login_user_id_.empty()) {
return;
}
@@ -977,7 +981,7 @@ void ExistingUserController::ShowError(int error_id,
if (num_login_attempts_ > 1) {
const user_manager::User* user =
user_manager::UserManager::Get()->FindUser(
- last_login_attempt_username_);
+ last_login_attempt_user_id_);
if (user && (user->GetType() == user_manager::USER_TYPE_SUPERVISED))
error_id = IDS_LOGIN_ERROR_AUTHENTICATING_2ND_TIME_SUPERVISED;
}
@@ -987,15 +991,15 @@ void ExistingUserController::ShowError(int error_id,
}
void ExistingUserController::ShowGaiaPasswordChanged(
- const std::string& username) {
+ const user_manager::UserID& user_id) {
// Invalidate OAuth token, since it can't be correct after password is
// changed.
user_manager::UserManager::Get()->SaveUserOAuthStatus(
- username, user_manager::User::OAUTH2_TOKEN_STATUS_INVALID);
- RecordReauthReason(username, ReauthReason::OTHER);
+ user_id, user_manager::User::OAUTH2_TOKEN_STATUS_INVALID);
+ RecordReauthReason(user_id, ReauthReason::OTHER);
login_display_->SetUIEnabled(true);
- login_display_->ShowGaiaPasswordChanged(username);
+ login_display_->ShowGaiaPasswordChanged(user_id);
}
void ExistingUserController::SendAccessibilityAlert(
@@ -1040,8 +1044,8 @@ void ExistingUserController::PerformPreLoginActions(
// Disable clicking on other windows and status tray.
login_display_->SetUIEnabled(false);
- if (last_login_attempt_username_ != user_context.GetUserID()) {
- last_login_attempt_username_ = user_context.GetUserID();
+ if (last_login_attempt_user_id_ != user_context.GetUserID()) {
Denis Kuznetsov (DE-MUC) 2015/06/10 16:50:46 Same question about (un)equality as above.
+ last_login_attempt_user_id_ = user_context.GetUserID();
num_login_attempts_ = 0;
// Also reset state variables, which are used to determine password change.
@@ -1129,7 +1133,7 @@ void ExistingUserController::DoCompleteLogin(
if (device_id.empty()) {
bool is_ephemeral =
ChromeUserManager::Get()->AreEphemeralUsersEnabled() &&
- user_context.GetUserID() != ChromeUserManager::Get()->GetOwnerEmail();
+ user_context.GetUserID() != ChromeUserManager::Get()->GetOwnerID();
device_id = ChromeSigninClient::GenerateSigninScopedDeviceID(is_ephemeral);
}
user_context.SetDeviceId(device_id);

Powered by Google App Engine
This is Rietveld 408576698