Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2013-06-10 14:12:07 +0400
committerBjörn Schießle <schiessle@owncloud.com>2013-06-10 14:12:07 +0400
commit13017ce9e114d84ba9b4ced240e5648447fdfe45 (patch)
tree5a4ae7b311319a239d9c6792cefc879b5558d1cc /settings/ajax
parentb25ab94a08ab9ba5e322043ac470d5352d456c71 (diff)
parentdb06b906e50d7d1b7eca28f51db913af1fbc81f1 (diff)
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.php30
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
+}