]> source.dussan.org Git - nextcloud-server.git/commitdiff
Use a controller instead of two files for changepassword.php
authorkondou <kondou@ts.unde.re>
Wed, 11 Sep 2013 14:35:13 +0000 (16:35 +0200)
committerkondou <kondou@ts.unde.re>
Wed, 11 Sep 2013 14:35:13 +0000 (16:35 +0200)
settings/ajax/changepassword.php
settings/ajax/changepersonalpassword.php [deleted file]
settings/routes.php

index 67b23d2a19ccd9c2bf538701cd269d3b75e3d60c..53bd69a2cd09b0a5ca746da3c83b2227f3d55bc9 100644 (file)
@@ -1,68 +1,98 @@
 <?php
 
-// Check if we are an user
-OC_JSON::callCheck();
-OC_JSON::checkLoggedIn();
+namespace OC\Settings\ChangePassword;
 
-// Manually load apps to ensure hooks work correctly (workaround for issue 1503)
-OC_App::loadApps();
+class Controller {
+       public static function changePersonalPassword($args) {
+               // Check if we are an user
+               \OC_JSON::callCheck();
+               \OC_JSON::checkLoggedIn();
 
-if (isset($_POST['username'])) {
-       $username = $_POST['username'];
-} else {
-       $l = new \OC_L10n('settings');
-       OC_JSON::error(array('data' => array('message' => $l->t('No user supplied')) ));
-       exit();
-}
+               // Manually load apps to ensure hooks work correctly (workaround for issue 1503)
+               \OC_App::loadApps();
 
-$password = isset($_POST['password']) ? $_POST['password'] : null;
-$recoveryPassword = isset($_POST['recoveryPassword']) ? $_POST['recoveryPassword'] : null;
+               $username = \OC_User::getUser();
+               $password = isset($_POST['personal-password']) ? $_POST['personal-password'] : null;
+               $oldPassword = isset($_POST['oldpassword']) ? $_POST['oldpassword'] : '';
 
-if (OC_User::isAdminUser(OC_User::getUser())) {
-       $userstatus = 'admin';
-} elseif (OC_SubAdmin::isUserAccessible(OC_User::getUser(), $username)) {
-       $userstatus = 'subadmin';
-} else {
-       $l = new \OC_L10n('settings');
-       OC_JSON::error(array('data' => array('message' => $l->t('Authentication error')) ));
-       exit();
-}
+               if (!\OC_User::checkPassword($username, $oldPassword)) {
+                       $l = new \OC_L10n('settings');
+                       \OC_JSON::error(array("data" => array("message" => $l->t("Wrong password")) ));
+                       exit();
+               }
+               if (!is_null($password) && \OC_User::setPassword($username, $password)) {
+                       \OC_JSON::success();
+               } else {
+                       \OC_JSON::error();
+               }
+       }
 
-if (\OC_App::isEnabled('files_encryption')) {
-       //handle the recovery case
-       $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $username);
-       $recoveryAdminEnabled = OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled');
+       public static function changeUserPassword($args) {
+               // Check if we are an user
+               \OC_JSON::callCheck();
+               \OC_JSON::checkLoggedIn();
 
-       $validRecoveryPassword = false;
-       $recoveryPasswordSupported = false;
-       if ($recoveryAdminEnabled) {
-               $validRecoveryPassword = $util->checkRecoveryPassword($recoveryPassword);
-               $recoveryEnabledForUser = $util->recoveryEnabledForUser();
-       }
+               // Manually load apps to ensure hooks work correctly (workaround for issue 1503)
+               \OC_App::loadApps();
 
-       if ($recoveryEnabledForUser && $recoveryPassword === '') {
-               OC_JSON::error(array('data' => array('message' => 'Please provide a admin recovery password, otherwise all user data will be lost')));
-       } elseif ($recoveryEnabledForUser && ! $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 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" )));
+               if (isset($_POST['username'])) {
+                       $username = $_POST['username'];
                } else {
-                       OC_JSON::success(array("data" => array( "username" => $username )));
+                       $l = new \OC_L10n('settings');
+                       \OC_JSON::error(array('data' => array('message' => $l->t('No user supplied')) ));
+                       exit();
                }
 
-       }
-} else { // 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')));
+               $password = isset($_POST['password']) ? $_POST['password'] : null;
+               $recoveryPassword = isset($_POST['recoveryPassword']) ? $_POST['recoveryPassword'] : null;
+
+               if (\OC_User::isAdminUser(\OC_User::getUser())) {
+                       $userstatus = 'admin';
+               } elseif (\OC_SubAdmin::isUserAccessible(\OC_User::getUser(), $username)) {
+                       $userstatus = 'subadmin';
+               } else {
+                       $l = new \OC_L10n('settings');
+                       \OC_JSON::error(array('data' => array('message' => $l->t('Authentication error')) ));
+                       exit();
+               }
+
+               if (\OC_App::isEnabled('files_encryption')) {
+                       //handle the recovery case
+                       $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $username);
+                       $recoveryAdminEnabled = \OC_Appconfig::getValue('files_encryption', 'recoveryAdminEnabled');
+
+                       $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 ($recoveryEnabledForUser && ! $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 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::success(array("data" => array( "username" => $username )));
+                               }
+
+                       }
+               } else { // 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')));
+                       }
+               }
        }
 }
diff --git a/settings/ajax/changepersonalpassword.php b/settings/ajax/changepersonalpassword.php
deleted file mode 100644 (file)
index 44ede3f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-// Check if we are an user
-OC_JSON::callCheck();
-OC_JSON::checkLoggedIn();
-
-// Manually load apps to ensure hooks work correctly (workaround for issue 1503)
-OC_App::loadApps();
-
-$username = OC_User::getUser();
-$password = isset($_POST['personal-password']) ? $_POST['personal-password'] : null;
-$oldPassword = isset($_POST['oldpassword']) ? $_POST['oldpassword'] : '';
-
-if (!OC_User::checkPassword($username, $oldPassword)) {
-       $l = new \OC_L10n('settings');
-       OC_JSON::error(array("data" => array("message" => $l->t("Wrong password")) ));
-       exit();
-}
-if (!is_null($password) && OC_User::setPassword($username, $password)) {
-       OC_JSON::success();
-} else {
-       OC_JSON::error();
-}
index af1c70ea44dcd46bcc3253211121c59661f870ae..71de81aa6c4111812ddee926d9182dc2ef77a8b6 100644 (file)
@@ -6,6 +6,9 @@
  * See the COPYING-README file.
  */
 
+// Necessary to include changepassword controller
+OC::$CLASSPATH['OC\Settings\ChangePassword\Controller'] = 'settings/ajax/changepassword.php';
+
 // Settings pages
 $this->create('settings_help', '/settings/help')
        ->actionInclude('settings/help.php');
@@ -37,13 +40,15 @@ $this->create('settings_ajax_togglesubadmins', '/settings/ajax/togglesubadmins.p
        ->actionInclude('settings/ajax/togglesubadmins.php');
 $this->create('settings_ajax_removegroup', '/settings/ajax/removegroup.php')
        ->actionInclude('settings/ajax/removegroup.php');
-$this->create('settings_ajax_changepassword', '/settings/ajax/changepassword.php')
-       ->actionInclude('settings/ajax/changepassword.php');
-$this->create('settings_ajax_changepersonalpassword', '/settings/ajax/changepersonalpassword.php')
-        ->actionInclude('settings/ajax/changepersonalpassword.php');
+$this->create('settings_ajax_changepassword', '/settings/users/changepassword')
+       ->post()
+       ->action('OC\Settings\ChangePassword\Controller', 'changeUserPassword');
 $this->create('settings_ajax_changedisplayname', '/settings/ajax/changedisplayname.php')
        ->actionInclude('settings/ajax/changedisplayname.php');
-// personel
+// personal
+$this->create('settings_ajax_changepersonalpassword', '/settings/personal/changepassword')
+       ->post()
+       ->action('OC\Settings\ChangePassword\Controller', 'changePersonalPassword');
 $this->create('settings_ajax_lostpassword', '/settings/ajax/lostpassword.php')
        ->actionInclude('settings/ajax/lostpassword.php');
 $this->create('settings_ajax_setlanguage', '/settings/ajax/setlanguage.php')