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

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc

Issue 1425093004: Revert of This CL replaces user_manager::UserID with AccountId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@468875--Chrome-OS-handles-deletion-of-Gmail-account-poorly--Create-AccountID-structure-part2--user_names
Patch Set: Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h"
6 6
7 #include "ash/system/chromeos/devicetype_utils.h" 7 #include "ash/system/chromeos/devicetype_utils.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 else 429 else
430 frame_error_ = net::ERR_INTERNET_DISCONNECTED; 430 frame_error_ = net::ERR_INTERNET_DISCONNECTED;
431 431
432 LOG(ERROR) << "Gaia webview error: " << error_reason_str; 432 LOG(ERROR) << "Gaia webview error: " << error_reason_str;
433 NetworkError::ErrorReason error_reason = 433 NetworkError::ErrorReason error_reason =
434 NetworkError::ERROR_REASON_FRAME_ERROR; 434 NetworkError::ERROR_REASON_FRAME_ERROR;
435 frame_state_ = FRAME_STATE_ERROR; 435 frame_state_ = FRAME_STATE_ERROR;
436 UpdateState(error_reason); 436 UpdateState(error_reason);
437 } 437 }
438 438
439 AccountId GaiaScreenHandler::GetAccountId( 439 std::string GaiaScreenHandler::GetCanonicalEmail(
440 const std::string& authenticated_email, 440 const std::string& authenticated_email,
441 const std::string& gaia_id) const { 441 const std::string& gaia_id) const {
442 const std::string sanitized_email = gaia::SanitizeEmail(authenticated_email);
443
442 const std::string canonicalized_email = 444 const std::string canonicalized_email =
443 gaia::CanonicalizeEmail(gaia::SanitizeEmail(authenticated_email)); 445 gaia::CanonicalizeEmail(sanitized_email);
444 const AccountId authenticated_account_id(
445 AccountId::FromUserEmailGaiaId(canonicalized_email, gaia_id));
446
447 // If we don't have UserManager instance (i.e. we are in unit test),
448 // or a known user has authenticated, just log in.
449 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 446 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
450 if (!user_manager || user_manager->IsKnownUser(authenticated_account_id)) 447 if (user_manager && !user_manager->IsKnownUser(canonicalized_email)) {
451 return authenticated_account_id; 448 std::string old_canonical_email;
452 449 if (user_manager->GetKnownUserCanonicalEmail(gaia_id,
453 // If [part of] user id has changed, update stored data and connect user 450 &old_canonical_email)) {
454 // to existing home directory. 451 if (old_canonical_email != canonicalized_email) {
455 AccountId old_account_id(EmptyAccountId()); 452 LOG(WARNING) << "Existing user '" << old_canonical_email
456 if (!user_manager->GetKnownUserAccountId(authenticated_account_id, 453 << "' authenticated by alias '" << sanitized_email << "'.";
457 &old_account_id)) { 454 return old_canonical_email;
458 return authenticated_account_id; 455 }
456 }
459 } 457 }
460 458 // For compatibility reasons, sanitized email is used.
461 if (old_account_id.GetUserEmail() != canonicalized_email) { 459 return sanitized_email;
462 LOG(WARNING) << "Existing user '" << old_account_id.GetUserEmail()
463 << "' authenticated by alias '" << canonicalized_email << "'.";
464 return old_account_id;
465 }
466
467 return authenticated_account_id;
468 } 460 }
469 461
470 void GaiaScreenHandler::HandleCompleteAuthentication( 462 void GaiaScreenHandler::HandleCompleteAuthentication(
471 const std::string& gaia_id, 463 const std::string& gaia_id,
472 const std::string& email, 464 const std::string& email,
473 const std::string& password, 465 const std::string& password,
474 const std::string& auth_code, 466 const std::string& auth_code,
475 bool using_saml, 467 bool using_saml,
476 const std::string& gaps_cookie) { 468 const std::string& gaps_cookie) {
477 if (!Delegate()) 469 if (!Delegate())
478 return; 470 return;
479 471
480 DCHECK(!email.empty()); 472 DCHECK(!email.empty());
481 DCHECK(!gaia_id.empty()); 473 DCHECK(!gaia_id.empty());
482 const std::string sanitized_email = gaia::SanitizeEmail(email); 474 const std::string sanitized_email = gaia::SanitizeEmail(email);
483 Delegate()->SetDisplayEmail(sanitized_email); 475 Delegate()->SetDisplayEmail(sanitized_email);
484 476
485 UserContext user_context(GetAccountId(email, gaia_id)); 477 const std::string canonical_email = GetCanonicalEmail(email, gaia_id);
478 UserContext user_context(canonical_email);
486 user_context.SetGaiaID(gaia_id); 479 user_context.SetGaiaID(gaia_id);
487 user_context.SetKey(Key(password)); 480 user_context.SetKey(Key(password));
488 user_context.SetAuthCode(auth_code); 481 user_context.SetAuthCode(auth_code);
489 user_context.SetAuthFlow(using_saml 482 user_context.SetAuthFlow(using_saml
490 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML 483 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML
491 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML); 484 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML);
492 user_context.SetGAPSCookie(gaps_cookie); 485 user_context.SetGAPSCookie(gaps_cookie);
493 Delegate()->CompleteLogin(user_context); 486 Delegate()->CompleteLogin(user_context);
494 } 487 }
495 488
(...skipping 12 matching lines...) Expand all
508 const std::string& typed_email, 501 const std::string& typed_email,
509 const std::string& password, 502 const std::string& password,
510 bool using_saml) { 503 bool using_saml) {
511 if (!is_enrolling_consumer_management_) { 504 if (!is_enrolling_consumer_management_) {
512 DoCompleteLogin(gaia_id, typed_email, password, using_saml); 505 DoCompleteLogin(gaia_id, typed_email, password, using_saml);
513 return; 506 return;
514 } 507 }
515 508
516 // Consumer management enrollment is in progress. 509 // Consumer management enrollment is in progress.
517 const std::string owner_email = 510 const std::string owner_email =
518 user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail(); 511 user_manager::UserManager::Get()->GetOwnerEmail();
519 if (typed_email != owner_email) { 512 if (typed_email != owner_email) {
520 // Show Gaia sign-in screen again, since we only allow the owner to sign 513 // Show Gaia sign-in screen again, since we only allow the owner to sign
521 // in. 514 // in.
522 populated_email_ = owner_email; 515 populated_email_ = owner_email;
523 ShowGaiaAsync(is_enrolling_consumer_management_); 516 ShowGaiaAsync(is_enrolling_consumer_management_);
524 return; 517 return;
525 } 518 }
526 519
527 CHECK(consumer_management_); 520 CHECK(consumer_management_);
528 consumer_management_->SetOwner(owner_email, 521 consumer_management_->SetOwner(owner_email,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 if (!Delegate()) 588 if (!Delegate())
596 return; 589 return;
597 590
598 if (using_saml && !using_saml_api_) 591 if (using_saml && !using_saml_api_)
599 RecordSAMLScrapingVerificationResultInHistogram(true); 592 RecordSAMLScrapingVerificationResultInHistogram(true);
600 593
601 DCHECK(!typed_email.empty()); 594 DCHECK(!typed_email.empty());
602 DCHECK(!gaia_id.empty()); 595 DCHECK(!gaia_id.empty());
603 const std::string sanitized_email = gaia::SanitizeEmail(typed_email); 596 const std::string sanitized_email = gaia::SanitizeEmail(typed_email);
604 Delegate()->SetDisplayEmail(sanitized_email); 597 Delegate()->SetDisplayEmail(sanitized_email);
605 UserContext user_context(GetAccountId(typed_email, gaia_id)); 598 const std::string canonical_email = GetCanonicalEmail(typed_email, gaia_id);
599 UserContext user_context(canonical_email);
606 user_context.SetGaiaID(gaia_id); 600 user_context.SetGaiaID(gaia_id);
607 user_context.SetKey(Key(password)); 601 user_context.SetKey(Key(password));
608 user_context.SetAuthFlow(using_saml 602 user_context.SetAuthFlow(using_saml
609 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML 603 ? UserContext::AUTH_FLOW_GAIA_WITH_SAML
610 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML); 604 : UserContext::AUTH_FLOW_GAIA_WITHOUT_SAML);
611 Delegate()->CompleteLogin(user_context); 605 Delegate()->CompleteLogin(user_context);
612 606
613 if (test_expects_complete_login_) { 607 if (test_expects_complete_login_) {
614 VLOG(2) << "Complete test login for " << typed_email 608 VLOG(2) << "Complete test login for " << typed_email
615 << ", requested=" << test_user_; 609 << ", requested=" << test_user_;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 imm->SetState(gaia_ime_state); 748 imm->SetState(gaia_ime_state);
755 749
756 // Set Least Recently Used input method for the user. 750 // Set Least Recently Used input method for the user.
757 if (!populated_email_.empty()) { 751 if (!populated_email_.empty()) {
758 SigninScreenHandler::SetUserInputMethod(populated_email_, 752 SigninScreenHandler::SetUserInputMethod(populated_email_,
759 gaia_ime_state.get()); 753 gaia_ime_state.get());
760 } else { 754 } else {
761 std::vector<std::string> input_methods = 755 std::vector<std::string> input_methods =
762 imm->GetInputMethodUtil()->GetHardwareLoginInputMethodIds(); 756 imm->GetInputMethodUtil()->GetHardwareLoginInputMethodIds();
763 const std::string owner_im = SigninScreenHandler::GetUserLRUInputMethod( 757 const std::string owner_im = SigninScreenHandler::GetUserLRUInputMethod(
764 user_manager::UserManager::Get()->GetOwnerAccountId().GetUserEmail()); 758 user_manager::UserManager::Get()->GetOwnerEmail());
765 const std::string system_im = g_browser_process->local_state()->GetString( 759 const std::string system_im = g_browser_process->local_state()->GetString(
766 language_prefs::kPreferredKeyboardLayout); 760 language_prefs::kPreferredKeyboardLayout);
767 761
768 PushFrontIMIfNotExists(owner_im, &input_methods); 762 PushFrontIMIfNotExists(owner_im, &input_methods);
769 PushFrontIMIfNotExists(system_im, &input_methods); 763 PushFrontIMIfNotExists(system_im, &input_methods);
770 764
771 gaia_ime_state->EnableLoginLayouts( 765 gaia_ime_state->EnableLoginLayouts(
772 g_browser_process->GetApplicationLocale(), input_methods); 766 g_browser_process->GetApplicationLocale(), input_methods);
773 767
774 if (!system_im.empty()) { 768 if (!system_im.empty()) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 VLOG(1) << "LoadAuthExtension, force: " << force 832 VLOG(1) << "LoadAuthExtension, force: " << force
839 << ", offline: " << offline; 833 << ", offline: " << offline;
840 GaiaContext context; 834 GaiaContext context;
841 context.force_reload = force; 835 context.force_reload = force;
842 context.is_local = offline; 836 context.is_local = offline;
843 context.use_offline = offline; 837 context.use_offline = offline;
844 context.email = populated_email_; 838 context.email = populated_email_;
845 context.is_enrolling_consumer_management = is_enrolling_consumer_management_; 839 context.is_enrolling_consumer_management = is_enrolling_consumer_management_;
846 840
847 std::string gaia_id; 841 std::string gaia_id;
848 if (user_manager::UserManager::Get()->FindGaiaID( 842 if (user_manager::UserManager::Get()->FindGaiaID(context.email, &gaia_id))
849 AccountId::FromUserEmail(context.email), &gaia_id))
850 context.gaia_id = gaia_id; 843 context.gaia_id = gaia_id;
851 844
852 if (Delegate()) { 845 if (Delegate()) {
853 context.show_users = Delegate()->IsShowUsers(); 846 context.show_users = Delegate()->IsShowUsers();
854 } 847 }
855 848
856 if (!context.email.empty()) { 849 if (!context.email.empty()) {
857 context.gaps_cookie = 850 context.gaps_cookie =
858 user_manager::UserManager::Get()->GetKnownUserGAPSCookie( 851 user_manager::UserManager::Get()->GetKnownUserGAPSCookie(
859 AccountId::FromUserEmail(gaia::CanonicalizeEmail(context.email))); 852 gaia::CanonicalizeEmail(context.email));
860 } 853 }
861 854
862 populated_email_.clear(); 855 populated_email_.clear();
863 856
864 LoadGaia(context); 857 LoadGaia(context);
865 } 858 }
866 859
867 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) { 860 void GaiaScreenHandler::UpdateState(NetworkError::ErrorReason reason) {
868 if (signin_screen_handler_) 861 if (signin_screen_handler_)
869 signin_screen_handler_->UpdateState(reason); 862 signin_screen_handler_->UpdateState(reason);
(...skipping 11 matching lines...) Expand all
881 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL || 874 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL ||
882 captive_portal_status_ == 875 captive_portal_status_ ==
883 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE; 876 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE;
884 } 877 }
885 878
886 void GaiaScreenHandler::DisableRestrictiveProxyCheckForTest() { 879 void GaiaScreenHandler::DisableRestrictiveProxyCheckForTest() {
887 disable_restrictive_proxy_check_for_test_ = true; 880 disable_restrictive_proxy_check_for_test_ = true;
888 } 881 }
889 882
890 } // namespace chromeos 883 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698