Chromium Code Reviews| Index: chrome/browser/chromeos/login/login_performer.cc |
| diff --git a/chrome/browser/chromeos/login/login_performer.cc b/chrome/browser/chromeos/login/login_performer.cc |
| index be542382b4c8a6a221d792a8046231adaf680469..e4d1a0994408795198d816c4d308f8bcf6ae7ecf 100644 |
| --- a/chrome/browser/chromeos/login/login_performer.cc |
| +++ b/chrome/browser/chromeos/login/login_performer.cc |
| @@ -23,6 +23,7 @@ |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" |
| +#include "chrome/browser/chromeos/policy/wildcard_login_checker.h" |
| #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| #include "chrome/browser/chromeos/settings/cros_settings.h" |
| #include "chrome/common/pref_names.h" |
| @@ -162,13 +163,27 @@ void LoginPerformer::PerformLogin(const UserContext& user_context, |
| return; |
| } |
| - bool is_whitelisted = LoginUtils::IsWhitelisted( |
| - gaia::CanonicalizeEmail(user_context.username)); |
| + bool wildcard_match = false; |
| + std::string email = gaia::CanonicalizeEmail(user_context.username); |
| + bool is_whitelisted = LoginUtils::IsWhitelisted(email, &wildcard_match); |
| if (is_whitelisted) { |
| switch (auth_mode_) { |
| - case AUTH_MODE_EXTENSION: |
| - StartLoginCompletion(); |
| + case AUTH_MODE_EXTENSION: { |
| + // On enterprise devices, reconfirm login permission with the server. |
| + policy::BrowserPolicyConnectorChromeOS* connector = |
| + g_browser_process->platform_part() |
| + ->browser_policy_connector_chromeos(); |
| + if (connector->IsEnterpriseManaged() && wildcard_match && |
| + !connector->IsNonEnterpriseUser(email)) { |
| + (new policy::WildcardLoginChecker())->Start( |
|
Joao da Silva
2014/01/28 14:45:46
I've found code like this hard to get right in tes
Mattias Nissler (ping if slow)
2014/01/28 15:44:22
All right, converting.
|
| + ProfileHelper::GetSigninProfile()->GetRequestContext(), |
| + base::Bind(&LoginPerformer::OnlineWildcardLoginCheckCompleted, |
| + weak_factory_.GetWeakPtr())); |
| + } else { |
| + StartLoginCompletion(); |
| + } |
| break; |
| + } |
| case AUTH_MODE_INTERNAL: |
| StartAuthentication(); |
| break; |
| @@ -341,4 +356,12 @@ void LoginPerformer::StartAuthentication() { |
| user_context_.auth_code.clear(); |
| } |
| +void LoginPerformer::OnlineWildcardLoginCheckCompleted(bool result) { |
| + if (result) { |
| + StartLoginCompletion(); |
| + } else { |
| + if (delegate_) |
| + delegate_->WhiteListCheckFailed(user_context_.username); |
| + } |
| +} |
| } // namespace chromeos |
|
Joao da Silva
2014/01/28 14:45:46
nit: add a newline
Mattias Nissler (ping if slow)
2014/01/28 15:44:22
Done.
|