| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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/chromeos/login/users/supervised_user_manager_impl.h" | 5 #include "chrome/browser/chromeos/login/users/supervised_user_manager_impl.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/prefs/pref_registry_simple.h" | 9 #include "base/prefs/pref_registry_simple.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/prefs/scoped_user_pref_update.h" | 11 #include "base/prefs/scoped_user_pref_update.h" |
| 12 #include "base/strings/string_util.h" | 12 #include "base/strings/string_util.h" |
| 13 #include "base/strings/stringprintf.h" | 13 #include "base/strings/stringprintf.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 15 #include "base/threading/sequenced_worker_pool.h" | 15 #include "base/threading/sequenced_worker_pool.h" |
| 16 #include "base/values.h" | 16 #include "base/values.h" |
| 17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 18 #include "chrome/browser/chromeos/login/managed/locally_managed_user_constants.h
" | 18 #include "chrome/browser/chromeos/login/supervised/supervised_user_authenticatio
n.h" |
| 19 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h
" | 19 #include "chrome/browser/chromeos/login/supervised/supervised_user_constants.h" |
| 20 #include "chrome/browser/chromeos/login/users/user_manager_impl.h" | 20 #include "chrome/browser/chromeos/login/users/user_manager_impl.h" |
| 21 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 21 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 22 #include "chrome/browser/supervised_user/supervised_user_service.h" | 22 #include "chrome/browser/supervised_user/supervised_user_service.h" |
| 23 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" | 23 #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
| 24 #include "chromeos/login/user_names.h" | 24 #include "chromeos/login/user_names.h" |
| 25 #include "chromeos/settings/cros_settings_names.h" | 25 #include "chromeos/settings/cros_settings_names.h" |
| 26 #include "components/user_manager/user_type.h" | 26 #include "components/user_manager/user_type.h" |
| 27 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" |
| 28 #include "google_apis/gaia/gaia_auth_util.h" | 28 #include "google_apis/gaia/gaia_auth_util.h" |
| 29 | 29 |
| 30 using content::BrowserThread; | 30 using content::BrowserThread; |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 // Names for pref keys in Local State. | 34 // Names for pref keys in Local State. |
| 35 // A map from locally managed user local user id to sync user id. | 35 // A map from supervised user local user id to sync user id. |
| 36 const char kSupervisedUserSyncId[] = | 36 const char kSupervisedUserSyncId[] = "ManagedUserSyncId"; |
| 37 "ManagedUserSyncId"; | |
| 38 | 37 |
| 39 // A map from locally managed user id to manager user id. | 38 // A map from supervised user id to manager user id. |
| 40 const char kSupervisedUserManagers[] = | 39 const char kSupervisedUserManagers[] = "ManagedUserManagers"; |
| 41 "ManagedUserManagers"; | |
| 42 | 40 |
| 43 // A map from locally managed user id to manager display name. | 41 // A map from supervised user id to manager display name. |
| 44 const char kSupervisedUserManagerNames[] = | 42 const char kSupervisedUserManagerNames[] = "ManagedUserManagerNames"; |
| 45 "ManagedUserManagerNames"; | |
| 46 | 43 |
| 47 // A map from locally managed user id to manager display e-mail. | 44 // A map from supervised user id to manager display e-mail. |
| 48 const char kSupervisedUserManagerDisplayEmails[] = | 45 const char kSupervisedUserManagerDisplayEmails[] = |
| 49 "ManagedUserManagerDisplayEmails"; | 46 "ManagedUserManagerDisplayEmails"; |
| 50 | 47 |
| 51 // A vector pref of the locally managed accounts defined on this device, that | 48 // A vector pref of the supervised accounts defined on this device, that had |
| 52 // had not logged in yet. | 49 // not logged in yet. |
| 53 const char kLocallyManagedUsersFirstRun[] = "LocallyManagedUsersFirstRun"; | 50 const char kSupervisedUsersFirstRun[] = "LocallyManagedUsersFirstRun"; |
| 54 | 51 |
| 55 // A pref of the next id for locally managed users generation. | 52 // A pref of the next id for supervised users generation. |
| 56 const char kLocallyManagedUsersNextId[] = | 53 const char kSupervisedUsersNextId[] = "LocallyManagedUsersNextId"; |
| 57 "LocallyManagedUsersNextId"; | |
| 58 | 54 |
| 59 // A pref of the next id for locally managed users generation. | 55 // A pref of the next id for supervised users generation. |
| 60 const char kLocallyManagedUserCreationTransactionDisplayName[] = | 56 const char kSupervisedUserCreationTransactionDisplayName[] = |
| 61 "LocallyManagedUserCreationTransactionDisplayName"; | 57 "LocallyManagedUserCreationTransactionDisplayName"; |
| 62 | 58 |
| 63 // A pref of the next id for locally managed users generation. | 59 // A pref of the next id for supervised users generation. |
| 64 const char kLocallyManagedUserCreationTransactionUserId[] = | 60 const char kSupervisedUserCreationTransactionUserId[] = |
| 65 "LocallyManagedUserCreationTransactionUserId"; | 61 "LocallyManagedUserCreationTransactionUserId"; |
| 66 | 62 |
| 67 // A map from user id to password schema id. | 63 // A map from user id to password schema id. |
| 68 const char kSupervisedUserPasswordSchema[] = | 64 const char kSupervisedUserPasswordSchema[] = |
| 69 "SupervisedUserPasswordSchema"; | 65 "SupervisedUserPasswordSchema"; |
| 70 | 66 |
| 71 // A map from user id to password salt. | 67 // A map from user id to password salt. |
| 72 const char kSupervisedUserPasswordSalt[] = | 68 const char kSupervisedUserPasswordSalt[] = |
| 73 "SupervisedUserPasswordSalt"; | 69 "SupervisedUserPasswordSalt"; |
| 74 | 70 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 const char kRequirePasswordUpdate[] = "RequirePasswordUpdate"; | 103 const char kRequirePasswordUpdate[] = "RequirePasswordUpdate"; |
| 108 const char kHasIncompleteKey[] = "HasIncompleteKey"; | 104 const char kHasIncompleteKey[] = "HasIncompleteKey"; |
| 109 const char kPasswordEncryptionKey[] = "password.hmac.encryption"; | 105 const char kPasswordEncryptionKey[] = "password.hmac.encryption"; |
| 110 const char kPasswordSignatureKey[] = "password.hmac.signature"; | 106 const char kPasswordSignatureKey[] = "password.hmac.signature"; |
| 111 | 107 |
| 112 const char kPasswordUpdateFile[] = "password.update"; | 108 const char kPasswordUpdateFile[] = "password.update"; |
| 113 const int kMinPasswordRevision = 1; | 109 const int kMinPasswordRevision = 1; |
| 114 | 110 |
| 115 // static | 111 // static |
| 116 void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) { | 112 void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) { |
| 117 registry->RegisterListPref(kLocallyManagedUsersFirstRun); | 113 registry->RegisterListPref(kSupervisedUsersFirstRun); |
| 118 registry->RegisterIntegerPref(kLocallyManagedUsersNextId, 0); | 114 registry->RegisterIntegerPref(kSupervisedUsersNextId, 0); |
| 119 registry->RegisterStringPref( | 115 registry->RegisterStringPref( |
| 120 kLocallyManagedUserCreationTransactionDisplayName, ""); | 116 kSupervisedUserCreationTransactionDisplayName, ""); |
| 121 registry->RegisterStringPref( | 117 registry->RegisterStringPref( |
| 122 kLocallyManagedUserCreationTransactionUserId, ""); | 118 kSupervisedUserCreationTransactionUserId, ""); |
| 123 registry->RegisterDictionaryPref(kSupervisedUserSyncId); | 119 registry->RegisterDictionaryPref(kSupervisedUserSyncId); |
| 124 registry->RegisterDictionaryPref(kSupervisedUserManagers); | 120 registry->RegisterDictionaryPref(kSupervisedUserManagers); |
| 125 registry->RegisterDictionaryPref(kSupervisedUserManagerNames); | 121 registry->RegisterDictionaryPref(kSupervisedUserManagerNames); |
| 126 registry->RegisterDictionaryPref(kSupervisedUserManagerDisplayEmails); | 122 registry->RegisterDictionaryPref(kSupervisedUserManagerDisplayEmails); |
| 127 | 123 |
| 128 registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); | 124 registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema); |
| 129 registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); | 125 registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt); |
| 130 registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); | 126 registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision); |
| 131 | 127 |
| 132 registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); | 128 registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate); |
| 133 registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); | 129 registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey); |
| 134 } | 130 } |
| 135 | 131 |
| 136 SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner) | 132 SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner) |
| 137 : owner_(owner), | 133 : owner_(owner), |
| 138 cros_settings_(CrosSettings::Get()) { | 134 cros_settings_(CrosSettings::Get()) { |
| 139 // SupervisedUserManager instance should be used only on UI thread. | 135 // SupervisedUserManager instance should be used only on UI thread. |
| 140 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 136 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 141 authentication_.reset(new SupervisedUserAuthentication(this)); | 137 authentication_.reset(new SupervisedUserAuthentication(this)); |
| 142 } | 138 } |
| 143 | 139 |
| 144 SupervisedUserManagerImpl::~SupervisedUserManagerImpl() { | 140 SupervisedUserManagerImpl::~SupervisedUserManagerImpl() { |
| 145 } | 141 } |
| 146 | 142 |
| 147 std::string SupervisedUserManagerImpl::GenerateUserId() { | 143 std::string SupervisedUserManagerImpl::GenerateUserId() { |
| 148 int counter = g_browser_process->local_state()-> | 144 int counter = g_browser_process->local_state()-> |
| 149 GetInteger(kLocallyManagedUsersNextId); | 145 GetInteger(kSupervisedUsersNextId); |
| 150 std::string id; | 146 std::string id; |
| 151 bool user_exists; | 147 bool user_exists; |
| 152 do { | 148 do { |
| 153 id = base::StringPrintf( | 149 id = base::StringPrintf( |
| 154 "%d@%s", counter, chromeos::login::kLocallyManagedUserDomain); | 150 "%d@%s", counter, chromeos::login::kSupervisedUserDomain); |
| 155 counter++; | 151 counter++; |
| 156 user_exists = (NULL != owner_->FindUser(id)); | 152 user_exists = (NULL != owner_->FindUser(id)); |
| 157 DCHECK(!user_exists); | 153 DCHECK(!user_exists); |
| 158 if (user_exists) { | 154 if (user_exists) { |
| 159 LOG(ERROR) << "Supervised user with id " << id << " already exists."; | 155 LOG(ERROR) << "Supervised user with id " << id << " already exists."; |
| 160 } | 156 } |
| 161 } while (user_exists); | 157 } while (user_exists); |
| 162 | 158 |
| 163 g_browser_process->local_state()-> | 159 g_browser_process->local_state()-> |
| 164 SetInteger(kLocallyManagedUsersNextId, counter); | 160 SetInteger(kSupervisedUsersNextId, counter); |
| 165 | 161 |
| 166 g_browser_process->local_state()->CommitPendingWrite(); | 162 g_browser_process->local_state()->CommitPendingWrite(); |
| 167 return id; | 163 return id; |
| 168 } | 164 } |
| 169 | 165 |
| 170 bool SupervisedUserManagerImpl::HasSupervisedUsers( | 166 bool SupervisedUserManagerImpl::HasSupervisedUsers( |
| 171 const std::string& manager_id) const { | 167 const std::string& manager_id) const { |
| 172 const UserList& users = owner_->GetUsers(); | 168 const UserList& users = owner_->GetUsers(); |
| 173 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 169 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
| 174 if ((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) { | 170 if ((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) { |
| 175 if (manager_id == GetManagerUserId((*it)->email())) | 171 if (manager_id == GetManagerUserId((*it)->email())) |
| 176 return true; | 172 return true; |
| 177 } | 173 } |
| 178 } | 174 } |
| 179 return false; | 175 return false; |
| 180 } | 176 } |
| 181 | 177 |
| 182 const User* SupervisedUserManagerImpl::CreateUserRecord( | 178 const User* SupervisedUserManagerImpl::CreateUserRecord( |
| 183 const std::string& manager_id, | 179 const std::string& manager_id, |
| 184 const std::string& local_user_id, | 180 const std::string& local_user_id, |
| 185 const std::string& sync_user_id, | 181 const std::string& sync_user_id, |
| 186 const base::string16& display_name) { | 182 const base::string16& display_name) { |
| 187 const User* user = FindByDisplayName(display_name); | 183 const User* user = FindByDisplayName(display_name); |
| 188 DCHECK(!user); | 184 DCHECK(!user); |
| 189 if (user) | 185 if (user) |
| 190 return user; | 186 return user; |
| 191 const User* manager = owner_->FindUser(manager_id); | 187 const User* manager = owner_->FindUser(manager_id); |
| 192 CHECK(manager); | 188 CHECK(manager); |
| 193 | 189 |
| 194 PrefService* local_state = g_browser_process->local_state(); | 190 PrefService* local_state = g_browser_process->local_state(); |
| 195 | 191 |
| 196 User* new_user = User::CreateLocallyManagedUser(local_user_id); | 192 User* new_user = User::CreateSupervisedUser(local_user_id); |
| 197 | 193 |
| 198 owner_->AddUserRecord(new_user); | 194 owner_->AddUserRecord(new_user); |
| 199 | 195 |
| 200 ListPrefUpdate prefs_new_users_update(local_state, | 196 ListPrefUpdate prefs_new_users_update(local_state, |
| 201 kLocallyManagedUsersFirstRun); | 197 kSupervisedUsersFirstRun); |
| 202 DictionaryPrefUpdate sync_id_update(local_state, kSupervisedUserSyncId); | 198 DictionaryPrefUpdate sync_id_update(local_state, kSupervisedUserSyncId); |
| 203 DictionaryPrefUpdate manager_update(local_state, kSupervisedUserManagers); | 199 DictionaryPrefUpdate manager_update(local_state, kSupervisedUserManagers); |
| 204 DictionaryPrefUpdate manager_name_update(local_state, | 200 DictionaryPrefUpdate manager_name_update(local_state, |
| 205 kSupervisedUserManagerNames); | 201 kSupervisedUserManagerNames); |
| 206 DictionaryPrefUpdate manager_email_update( | 202 DictionaryPrefUpdate manager_email_update( |
| 207 local_state, | 203 local_state, |
| 208 kSupervisedUserManagerDisplayEmails); | 204 kSupervisedUserManagerDisplayEmails); |
| 209 | 205 |
| 210 prefs_new_users_update->Insert(0, new base::StringValue(local_user_id)); | 206 prefs_new_users_update->Insert(0, new base::StringValue(local_user_id)); |
| 211 | 207 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 PrefService* local_state = g_browser_process->local_state(); | 350 PrefService* local_state = g_browser_process->local_state(); |
| 355 DictionaryPrefUpdate update(local_state, key); | 351 DictionaryPrefUpdate update(local_state, key); |
| 356 update->SetBooleanWithoutPathExpansion(user_id, value); | 352 update->SetBooleanWithoutPathExpansion(user_id, value); |
| 357 } | 353 } |
| 358 | 354 |
| 359 const User* SupervisedUserManagerImpl::FindByDisplayName( | 355 const User* SupervisedUserManagerImpl::FindByDisplayName( |
| 360 const base::string16& display_name) const { | 356 const base::string16& display_name) const { |
| 361 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 357 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 362 const UserList& users = owner_->GetUsers(); | 358 const UserList& users = owner_->GetUsers(); |
| 363 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 359 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
| 364 if (((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) && | 360 if (((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) && |
| 365 ((*it)->display_name() == display_name)) { | 361 ((*it)->display_name() == display_name)) { |
| 366 return *it; | 362 return *it; |
| 367 } | 363 } |
| 368 } | 364 } |
| 369 return NULL; | 365 return NULL; |
| 370 } | 366 } |
| 371 | 367 |
| 372 const User* SupervisedUserManagerImpl::FindBySyncId( | 368 const User* SupervisedUserManagerImpl::FindBySyncId( |
| 373 const std::string& sync_id) const { | 369 const std::string& sync_id) const { |
| 374 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 370 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 375 const UserList& users = owner_->GetUsers(); | 371 const UserList& users = owner_->GetUsers(); |
| 376 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 372 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
| 377 if (((*it)->GetType() == user_manager::USER_TYPE_LOCALLY_MANAGED) && | 373 if (((*it)->GetType() == user_manager::USER_TYPE_SUPERVISED) && |
| 378 (GetUserSyncId((*it)->email()) == sync_id)) { | 374 (GetUserSyncId((*it)->email()) == sync_id)) { |
| 379 return *it; | 375 return *it; |
| 380 } | 376 } |
| 381 } | 377 } |
| 382 return NULL; | 378 return NULL; |
| 383 } | 379 } |
| 384 | 380 |
| 385 void SupervisedUserManagerImpl::StartCreationTransaction( | 381 void SupervisedUserManagerImpl::StartCreationTransaction( |
| 386 const base::string16& display_name) { | 382 const base::string16& display_name) { |
| 387 g_browser_process->local_state()-> | 383 g_browser_process->local_state()-> |
| 388 SetString(kLocallyManagedUserCreationTransactionDisplayName, | 384 SetString(kSupervisedUserCreationTransactionDisplayName, |
| 389 base::UTF16ToASCII(display_name)); | 385 base::UTF16ToASCII(display_name)); |
| 390 g_browser_process->local_state()->CommitPendingWrite(); | 386 g_browser_process->local_state()->CommitPendingWrite(); |
| 391 } | 387 } |
| 392 | 388 |
| 393 void SupervisedUserManagerImpl::SetCreationTransactionUserId( | 389 void SupervisedUserManagerImpl::SetCreationTransactionUserId( |
| 394 const std::string& email) { | 390 const std::string& email) { |
| 395 g_browser_process->local_state()-> | 391 g_browser_process->local_state()-> |
| 396 SetString(kLocallyManagedUserCreationTransactionUserId, | 392 SetString(kSupervisedUserCreationTransactionUserId, |
| 397 email); | 393 email); |
| 398 g_browser_process->local_state()->CommitPendingWrite(); | 394 g_browser_process->local_state()->CommitPendingWrite(); |
| 399 } | 395 } |
| 400 | 396 |
| 401 void SupervisedUserManagerImpl::CommitCreationTransaction() { | 397 void SupervisedUserManagerImpl::CommitCreationTransaction() { |
| 402 g_browser_process->local_state()-> | 398 g_browser_process->local_state()-> |
| 403 ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 399 ClearPref(kSupervisedUserCreationTransactionDisplayName); |
| 404 g_browser_process->local_state()-> | 400 g_browser_process->local_state()-> |
| 405 ClearPref(kLocallyManagedUserCreationTransactionUserId); | 401 ClearPref(kSupervisedUserCreationTransactionUserId); |
| 406 g_browser_process->local_state()->CommitPendingWrite(); | 402 g_browser_process->local_state()->CommitPendingWrite(); |
| 407 } | 403 } |
| 408 | 404 |
| 409 bool SupervisedUserManagerImpl::HasFailedUserCreationTransaction() { | 405 bool SupervisedUserManagerImpl::HasFailedUserCreationTransaction() { |
| 410 return !(g_browser_process->local_state()-> | 406 return !(g_browser_process->local_state()-> |
| 411 GetString(kLocallyManagedUserCreationTransactionDisplayName). | 407 GetString(kSupervisedUserCreationTransactionDisplayName). |
| 412 empty()); | 408 empty()); |
| 413 } | 409 } |
| 414 | 410 |
| 415 void SupervisedUserManagerImpl::RollbackUserCreationTransaction() { | 411 void SupervisedUserManagerImpl::RollbackUserCreationTransaction() { |
| 416 PrefService* prefs = g_browser_process->local_state(); | 412 PrefService* prefs = g_browser_process->local_state(); |
| 417 | 413 |
| 418 std::string display_name = prefs-> | 414 std::string display_name = prefs-> |
| 419 GetString(kLocallyManagedUserCreationTransactionDisplayName); | 415 GetString(kSupervisedUserCreationTransactionDisplayName); |
| 420 std::string user_id = prefs-> | 416 std::string user_id = prefs-> |
| 421 GetString(kLocallyManagedUserCreationTransactionUserId); | 417 GetString(kSupervisedUserCreationTransactionUserId); |
| 422 | 418 |
| 423 LOG(WARNING) << "Cleaning up transaction for " | 419 LOG(WARNING) << "Cleaning up transaction for " |
| 424 << display_name << "/" << user_id; | 420 << display_name << "/" << user_id; |
| 425 | 421 |
| 426 if (user_id.empty()) { | 422 if (user_id.empty()) { |
| 427 // Not much to do - just remove transaction. | 423 // Not much to do - just remove transaction. |
| 428 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 424 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
| 429 prefs->CommitPendingWrite(); | 425 prefs->CommitPendingWrite(); |
| 430 return; | 426 return; |
| 431 } | 427 } |
| 432 | 428 |
| 433 if (gaia::ExtractDomainName(user_id) != | 429 if (gaia::ExtractDomainName(user_id) != |
| 434 chromeos::login::kLocallyManagedUserDomain) { | 430 chromeos::login::kSupervisedUserDomain) { |
| 435 LOG(WARNING) << "Clean up transaction for non-locally managed user found :" | 431 LOG(WARNING) << "Clean up transaction for non-supervised user found :" |
| 436 << user_id << ", will not remove data"; | 432 << user_id << ", will not remove data"; |
| 437 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 433 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
| 438 prefs->ClearPref(kLocallyManagedUserCreationTransactionUserId); | 434 prefs->ClearPref(kSupervisedUserCreationTransactionUserId); |
| 439 prefs->CommitPendingWrite(); | 435 prefs->CommitPendingWrite(); |
| 440 return; | 436 return; |
| 441 } | 437 } |
| 442 owner_->RemoveNonOwnerUserInternal(user_id, NULL); | 438 owner_->RemoveNonOwnerUserInternal(user_id, NULL); |
| 443 | 439 |
| 444 prefs->ClearPref(kLocallyManagedUserCreationTransactionDisplayName); | 440 prefs->ClearPref(kSupervisedUserCreationTransactionDisplayName); |
| 445 prefs->ClearPref(kLocallyManagedUserCreationTransactionUserId); | 441 prefs->ClearPref(kSupervisedUserCreationTransactionUserId); |
| 446 prefs->CommitPendingWrite(); | 442 prefs->CommitPendingWrite(); |
| 447 } | 443 } |
| 448 | 444 |
| 449 void SupervisedUserManagerImpl::RemoveNonCryptohomeData( | 445 void SupervisedUserManagerImpl::RemoveNonCryptohomeData( |
| 450 const std::string& user_id) { | 446 const std::string& user_id) { |
| 451 PrefService* prefs = g_browser_process->local_state(); | 447 PrefService* prefs = g_browser_process->local_state(); |
| 452 ListPrefUpdate prefs_new_users_update(prefs, kLocallyManagedUsersFirstRun); | 448 ListPrefUpdate prefs_new_users_update(prefs, kSupervisedUsersFirstRun); |
| 453 prefs_new_users_update->Remove(base::StringValue(user_id), NULL); | 449 prefs_new_users_update->Remove(base::StringValue(user_id), NULL); |
| 454 | 450 |
| 455 CleanPref(user_id, kSupervisedUserSyncId); | 451 CleanPref(user_id, kSupervisedUserSyncId); |
| 456 CleanPref(user_id, kSupervisedUserManagers); | 452 CleanPref(user_id, kSupervisedUserManagers); |
| 457 CleanPref(user_id, kSupervisedUserManagerNames); | 453 CleanPref(user_id, kSupervisedUserManagerNames); |
| 458 CleanPref(user_id, kSupervisedUserManagerDisplayEmails); | 454 CleanPref(user_id, kSupervisedUserManagerDisplayEmails); |
| 459 CleanPref(user_id, kSupervisedUserPasswordSalt); | 455 CleanPref(user_id, kSupervisedUserPasswordSalt); |
| 460 CleanPref(user_id, kSupervisedUserPasswordSchema); | 456 CleanPref(user_id, kSupervisedUserPasswordSchema); |
| 461 CleanPref(user_id, kSupervisedUserPasswordRevision); | 457 CleanPref(user_id, kSupervisedUserPasswordRevision); |
| 462 CleanPref(user_id, kSupervisedUserNeedPasswordUpdate); | 458 CleanPref(user_id, kSupervisedUserNeedPasswordUpdate); |
| 463 CleanPref(user_id, kSupervisedUserIncompleteKey); | 459 CleanPref(user_id, kSupervisedUserIncompleteKey); |
| 464 } | 460 } |
| 465 | 461 |
| 466 void SupervisedUserManagerImpl::CleanPref(const std::string& user_id, | 462 void SupervisedUserManagerImpl::CleanPref(const std::string& user_id, |
| 467 const char* key) { | 463 const char* key) { |
| 468 PrefService* prefs = g_browser_process->local_state(); | 464 PrefService* prefs = g_browser_process->local_state(); |
| 469 DictionaryPrefUpdate dict_update(prefs, key); | 465 DictionaryPrefUpdate dict_update(prefs, key); |
| 470 dict_update->RemoveWithoutPathExpansion(user_id, NULL); | 466 dict_update->RemoveWithoutPathExpansion(user_id, NULL); |
| 471 } | 467 } |
| 472 | 468 |
| 473 bool SupervisedUserManagerImpl::CheckForFirstRun(const std::string& user_id) { | 469 bool SupervisedUserManagerImpl::CheckForFirstRun(const std::string& user_id) { |
| 474 ListPrefUpdate prefs_new_users_update(g_browser_process->local_state(), | 470 ListPrefUpdate prefs_new_users_update(g_browser_process->local_state(), |
| 475 kLocallyManagedUsersFirstRun); | 471 kSupervisedUsersFirstRun); |
| 476 return prefs_new_users_update->Remove(base::StringValue(user_id), NULL); | 472 return prefs_new_users_update->Remove(base::StringValue(user_id), NULL); |
| 477 } | 473 } |
| 478 | 474 |
| 479 void SupervisedUserManagerImpl::UpdateManagerName(const std::string& manager_id, | 475 void SupervisedUserManagerImpl::UpdateManagerName(const std::string& manager_id, |
| 480 const base::string16& new_display_name) { | 476 const base::string16& new_display_name) { |
| 481 PrefService* local_state = g_browser_process->local_state(); | 477 PrefService* local_state = g_browser_process->local_state(); |
| 482 | 478 |
| 483 const base::DictionaryValue* manager_ids = | 479 const base::DictionaryValue* manager_ids = |
| 484 local_state->GetDictionary(kSupervisedUserManagers); | 480 local_state->GetDictionary(kSupervisedUserManagers); |
| 485 | 481 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 516 } | 512 } |
| 517 | 513 |
| 518 void SupervisedUserManagerImpl::ConfigureSyncWithToken( | 514 void SupervisedUserManagerImpl::ConfigureSyncWithToken( |
| 519 Profile* profile, | 515 Profile* profile, |
| 520 const std::string& token) { | 516 const std::string& token) { |
| 521 if (!token.empty()) | 517 if (!token.empty()) |
| 522 SupervisedUserServiceFactory::GetForProfile(profile)->InitSync(token); | 518 SupervisedUserServiceFactory::GetForProfile(profile)->InitSync(token); |
| 523 } | 519 } |
| 524 | 520 |
| 525 } // namespace chromeos | 521 } // namespace chromeos |
| OLD | NEW |