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

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

Issue 221813006: Various supervised user password fixes - 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix comments Created 6 years, 9 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/supervised_user_manager_impl.cc
diff --git a/chrome/browser/chromeos/login/supervised_user_manager_impl.cc b/chrome/browser/chromeos/login/supervised_user_manager_impl.cc
index 72c02e616072dc2533ee540e5b844bc04133e0e8..3da81b7f3790b4f5a662e3709f5cf00ff49e394d 100644
--- a/chrome/browser/chromeos/login/supervised_user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/supervised_user_manager_impl.cc
@@ -74,6 +74,15 @@ const char kSupervisedUserPasswordSalt[] =
const char kSupervisedUserPasswordRevision[] =
"SupervisedUserPasswordRevision";
+// A map from user id to flag indicating if password should be updated upon
+// signin.
+const char kSupervisedUserNeedPasswordUpdate[] =
+ "SupervisedUserNeedPasswordUpdate";
+
+// A map from user id to flag indicating if cryptohome does not have signature
+// key.
+const char kSupervisedUserIncompleteKey[] = "SupervisedUserHasIncompleteKey";
+
std::string LoadSyncToken(base::FilePath profile_dir) {
std::string token;
base::FilePath token_file =
@@ -117,6 +126,9 @@ void SupervisedUserManager::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterDictionaryPref(kSupervisedUserPasswordSchema);
registry->RegisterDictionaryPref(kSupervisedUserPasswordSalt);
registry->RegisterDictionaryPref(kSupervisedUserPasswordRevision);
+
+ registry->RegisterDictionaryPref(kSupervisedUserNeedPasswordUpdate);
+ registry->RegisterDictionaryPref(kSupervisedUserIncompleteKey);
}
SupervisedUserManagerImpl::SupervisedUserManagerImpl(UserManagerImpl* owner)
@@ -253,6 +265,12 @@ void SupervisedUserManagerImpl::GetPasswordInformation(
if (GetUserIntegerValue(user_id, kSupervisedUserPasswordRevision, &value))
result->SetIntegerWithoutPathExpansion(kPasswordRevision, value);
+ bool flag;
+ if (GetUserBooleanValue(user_id, kSupervisedUserNeedPasswordUpdate, &flag))
+ result->SetBooleanWithoutPathExpansion(kRequirePasswordUpdate, flag);
+ if (GetUserBooleanValue(user_id, kSupervisedUserIncompleteKey, &flag))
+ result->SetBooleanWithoutPathExpansion(kHasIncompleteKey, flag);
+
std::string salt;
if (GetUserStringValue(user_id, kSupervisedUserPasswordSalt, &salt))
result->SetStringWithoutPathExpansion(kSalt, salt);
@@ -267,6 +285,14 @@ void SupervisedUserManagerImpl::SetPasswordInformation(
if (password_info->GetIntegerWithoutPathExpansion(kPasswordRevision, &value))
SetUserIntegerValue(user_id, kSupervisedUserPasswordRevision, value);
+ bool flag;
+ if (password_info->GetBooleanWithoutPathExpansion(kRequirePasswordUpdate,
+ &flag)) {
+ SetUserBooleanValue(user_id, kSupervisedUserNeedPasswordUpdate, flag);
+ }
+ if (password_info->GetBooleanWithoutPathExpansion(kHasIncompleteKey, &flag))
+ SetUserBooleanValue(user_id, kSupervisedUserIncompleteKey, flag);
+
std::string salt;
if (password_info->GetStringWithoutPathExpansion(kSalt, &salt))
SetUserStringValue(user_id, kSupervisedUserPasswordSalt, salt);
@@ -291,6 +317,14 @@ bool SupervisedUserManagerImpl::GetUserIntegerValue(
return dictionary->GetIntegerWithoutPathExpansion(user_id, out_value);
}
+bool SupervisedUserManagerImpl::GetUserBooleanValue(const std::string& user_id,
+ const char* key,
+ bool* out_value) const {
+ PrefService* local_state = g_browser_process->local_state();
+ const base::DictionaryValue* dictionary = local_state->GetDictionary(key);
+ return dictionary->GetBooleanWithoutPathExpansion(user_id, out_value);
+}
+
void SupervisedUserManagerImpl::SetUserStringValue(
const std::string& user_id,
const char* key,
@@ -309,6 +343,14 @@ void SupervisedUserManagerImpl::SetUserIntegerValue(
update->SetIntegerWithoutPathExpansion(user_id, value);
}
+void SupervisedUserManagerImpl::SetUserBooleanValue(const std::string& user_id,
+ const char* key,
+ const bool value) {
+ PrefService* local_state = g_browser_process->local_state();
+ DictionaryPrefUpdate update(local_state, key);
+ update->SetBooleanWithoutPathExpansion(user_id, value);
+}
+
const User* SupervisedUserManagerImpl::FindByDisplayName(
const base::string16& display_name) const {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -412,6 +454,8 @@ void SupervisedUserManagerImpl::RemoveNonCryptohomeData(
CleanPref(user_id, kSupervisedUserPasswordSalt);
CleanPref(user_id, kSupervisedUserPasswordSchema);
CleanPref(user_id, kSupervisedUserPasswordRevision);
+ CleanPref(user_id, kSupervisedUserNeedPasswordUpdate);
+ CleanPref(user_id, kSupervisedUserIncompleteKey);
}
void SupervisedUserManagerImpl::CleanPref(const std::string& user_id,

Powered by Google App Engine
This is Rietveld 408576698