]> source.dussan.org Git - nextcloud-server.git/commitdiff
Merge branch 'master' into files_encryption_check_private_key
authorBjörn Schießle <schiessle@owncloud.com>
Mon, 10 Jun 2013 10:12:07 +0000 (12:12 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Mon, 10 Jun 2013 10:12:07 +0000 (12:12 +0200)
Conflicts:
settings/ajax/changepassword.php

1  2 
apps/files_encryption/appinfo/app.php
apps/files_encryption/hooks/hooks.php
apps/files_encryption/lib/helper.php
apps/files_encryption/tests/share.php
settings/ajax/changepassword.php

Simple merge
Simple merge
Simple merge
Simple merge
index e8adb8c959fdf5a640e947550685acffbaffc22a,308778105503ec286a5e634936e4c10db0ef4d2b..d409904ebc72ee1703b2b1280cf24942aec8d196
@@@ -23,28 -23,34 +23,42 @@@ if (OC_User::getUser() === $username &
        $userstatus = 'user';
  }
  
 -if(is_null($userstatus)) {
 -      OC_JSON::error( array( "data" => array( "message" => "Authentication error" )));
 +if (is_null($userstatus)) {
 +      OC_JSON::error(array('data' => array('message' => 'Authentication error')));
        exit();
  }
 -$recoveryAdminEnabled = OC_Appconfig::getValue( 'files_encryption', 'recoveryAdminEnabled' );
 -
 -
 -$validRecoveryPassword = false;
 -$recoveryPasswordSupported = false;
 -
 -if ($recoveryAdminEnabled) {
 +if (\OCP\App::isEnabled('files_encryption') && $userstatus !== 'user') {
++      //handle the recovery case
        $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $username);
 -      $validRecoveryPassword = $util->checkRecoveryPassword($recoveryPassword);
 -      $recoveryPasswordSupported = $util->recoveryEnabledForUser();
 -}
 +      $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 ($recoveryPasswordSupported && $recoveryPassword == '') {
 -      OC_JSON::error(array("data" => array( "message" => "Please provide a admin recovery password, otherwise all user data will be lost" )));
 -} elseif ( $recoveryPasswordSupported && ! $validRecoveryPassword) {
 -      OC_JSON::error(array("data" => array( "message" => "Wrong admin recovery password. Please check the password and try again." )));
 -} else { // now we know that everything is file regarding the recovery password, let's try to change the password
++      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')));
 +      }
- }
+ }