diff options
author | Björn Schießle <schiessle@owncloud.com> | 2013-06-10 12:12:07 +0200 |
---|---|---|
committer | Björn Schießle <schiessle@owncloud.com> | 2013-06-10 12:12:07 +0200 |
commit | 13017ce9e114d84ba9b4ced240e5648447fdfe45 (patch) | |
tree | 5a4ae7b311319a239d9c6792cefc879b5558d1cc /settings/ajax | |
parent | b25ab94a08ab9ba5e322043ac470d5352d456c71 (diff) | |
parent | db06b906e50d7d1b7eca28f51db913af1fbc81f1 (diff) | |
download | nextcloud-server-13017ce9e114d84ba9b4ced240e5648447fdfe45.tar.gz nextcloud-server-13017ce9e114d84ba9b4ced240e5648447fdfe45.zip |
Merge branch 'master' into files_encryption_check_private_key
Conflicts:
settings/ajax/changepassword.php
Diffstat (limited to 'settings/ajax')
-rw-r--r-- | settings/ajax/changepassword.php | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php index e8adb8c959f..d409904ebc7 100644 --- a/settings/ajax/changepassword.php +++ b/settings/ajax/changepassword.php @@ -27,24 +27,38 @@ if (is_null($userstatus)) { OC_JSON::error(array('data' => array('message' => 'Authentication error'))); exit(); } + if (\OCP\App::isEnabled('files_encryption') && $userstatus !== 'user') { + //handle the recovery case $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $username); $recoveryAdminEnabled = OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled'); - $recoveryEnabledForUser = $util->recoveryEnabledForUser(); - if ($recoveryAdminEnabled && $recoveryEnabledForUser && $recoveryPassword === '') { + $validRecoveryPassword = false; + $recoveryPasswordSupported = false; + if ($recoveryAdminEnabled) { + $validRecoveryPassword = $util->checkRecoveryPassword($recoveryPassword); + $recoveryEnabledForUser = $util->recoveryEnabledForUser(); + } + + if ($recoveryEnabledForUser && $recoveryPassword === '') { OC_JSON::error(array('data' => array('message' => 'Please provide a admin recovery password, otherwise all user data will be lost'))); - } elseif ($recoveryPassword && !$util->checkRecoveryPassword($recoveryPassword)) { + } elseif ($recoveryEnabledForUser && ! $validRecoveryPassword) { OC_JSON::error(array('data' => array('message' => 'Wrong admin recovery password. Please check the password and try again.'))); - } elseif (!is_null($password) && OC_User::setPassword($username, $password, $recoveryPassword)) { - OC_JSON::success(array('data' => array('username' => $username))); + } else { // now we know that everything is fine regarding the recovery password, let's try to change the password + $result = OC_User::setPassword($username, $password, $recoveryPassword); + if (!$result && $recoveryPasswordSupported) { + OC_JSON::error(array("data" => array( "message" => "Back-end doesn't support password change, but the users encryption key was successfully updated." ))); + } elseif (!$result && !$recoveryPasswordSupported) { + OC_JSON::error(array("data" => array( "message" => "Unable to change password" ))); } else { - OC_JSON::error(array('data' => array('message' => 'Unable to change password'))); + OC_JSON::success(array("data" => array( "username" => $username ))); + } + } -} else { +} else { // if user changes his own password or if encryption is disabled, proceed if (!is_null($password) && OC_User::setPassword($username, $password)) { OC_JSON::success(array('data' => array('username' => $username))); } else { OC_JSON::error(array('data' => array('message' => 'Unable to change password'))); } -}
\ No newline at end of file +} |