diff --git a/module/user/control.php b/module/user/control.php index 76092f98db..a85433b172 100755 --- a/module/user/control.php +++ b/module/user/control.php @@ -801,6 +801,7 @@ class user extends control } /** + * 重置密码。 * Reset password. * * @access public @@ -813,29 +814,33 @@ class user extends control $resetFileName = $this->app->getBasePath() . 'tmp' . DIRECTORY_SEPARATOR . uniqid('reset_') . '.txt'; $this->session->set('resetFileName', $resetFileName); } - - $resetFileName = $this->session->resetFileName; - - $needCreateFile = false; - if(!file_exists($resetFileName) or (time() - filemtime($resetFileName)) > 60 * 2) $needCreateFile = true; + $resetFileName = $this->session->resetFileName; + $needCreateFile = !file_exists($resetFileName) || (time() - filemtime($resetFileName)) > 60 * 2; if($_POST) { if($needCreateFile) return $this->send(array('result' => 'success', 'load' => true)); - $result = $this->user->resetPassword(); + $user = form::data($this->config->user->form->reset) + ->setIF($this->post->password1 != false, 'password', substr($this->post->password1, 0, 32)) + ->get(); + $this->userZen->checkPassword($user); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + + $result = $this->user->resetPassword($user); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if(!$result) return $this->send(array('result' => 'fail', 'message' => $this->lang->user->resetFail)); $referer = helper::safe64Encode($this->createLink('index', 'index')); - return $this->send(array('result' => 'success', 'message' => $this->lang->user->resetSuccess, 'locate' => $this->createLink('user', 'logout', 'referer=' . $referer))); + return $this->send(array('result' => 'success', 'message' => $this->lang->user->resetSuccess, 'locate' => inlink('logout', 'referer=' . $referer))); } - /* Remove the real path for security reason. */ + /* 移除真实路径以确保安全。*/ + /* Remove the real path to ensure security. */ $resetFileName = str_replace($this->app->getBasePath(), '', $resetFileName); $this->view->title = $this->lang->user->resetPassword; - $this->view->status = 'reset'; + $this->view->rand = $this->user->updateSessionRandom(); $this->view->needCreateFile = $needCreateFile; $this->view->resetFileName = $resetFileName; diff --git a/module/user/ui/reset.html.php b/module/user/ui/reset.html.php index 79ce0d6a0e..03d5dc7805 100644 --- a/module/user/ui/reset.html.php +++ b/module/user/ui/reset.html.php @@ -47,6 +47,8 @@ $content = $needCreateFile ? div ( setClass('reset-form w-full'), set::title($lang->user->resetPassword), + on::change('#password1,#password2', 'changePassword'), + on::click('button[type=submit]', 'encryptPassword'), formRow ( formGroup @@ -69,7 +71,7 @@ $content = $needCreateFile ? div ( formGroup ( - set::label($lang->user->password2), + set::label($lang->user->abbr->password2), set::control('password'), set::name('password2'), set::required(true) @@ -78,18 +80,11 @@ $content = $needCreateFile ? div formRow ( setClass('hidden'), - formGroup - ( - set::name('passwordLength'), - set::value(0) - ), - formGroup - ( - set::name('verifyRand'), - set::value($rand) - ) + input(set::name('passwordLength'), set::value(0)), + input(set::name('passwordStrength'), set::value(0)) ) - ) + ), + formHidden('verifyRand', $rand) ); set::zui(true);