Beispiel #1
0
 /**
  * 忘记密码通过邮件重置新密码处理(支持 ajax).
  * status: 0 用户名, 1 密码, 2 确认密码, 8 重置失败, 9 重置成功
  *
  * @access public
  * @return void
  * @author Liuping <*****@*****.**>
  */
 public function forgotPasswdByEmailAction()
 {
     $username = I('post.username', '');
     $username = authcode($username, 'DECODE', C('AUTH_KEY'));
     $email = I('post.email', '');
     $email = authcode($email, 'DECODE', C('AUTH_KEY'));
     $passwd = I('post.passwd', '');
     $rePasswd = I('post.repasswd', '');
     $pattern = '/^.{6,20}$/';
     $result = [];
     // 校验该用户是否有重置密码记录
     $logModel = new UserResetpwdLogModel();
     $model = new UserModel();
     $userInfo = $model->checkUserAndEmail($username, $email);
     if (empty($username)) {
         $result['status'] = 0;
         $result['msg'] = L('CONTROLLER_MSG37');
     } elseif (empty($email)) {
         $result['status'] = 1;
         $result['msg'] = L('CONTROLLER_MSG37');
     } elseif (empty($passwd) || empty($rePasswd)) {
         $result['status'] = 2;
         $result['msg'] = L('CONTROLLER_MSG1');
     } elseif ($passwd != $rePasswd) {
         $result['status'] = 2;
         $result['msg'] = L('CONTROLLER_MSG15');
     } elseif (!preg_match($pattern, $passwd)) {
         $result['status'] = 2;
         $result['msg'] = L('CONTROLLER_MSG16');
     } elseif (!$logModel->checkEmail($username, $email)) {
         $result['status'] = 3;
         $result['msg'] = L('CONTROLLER_MSG33');
     } elseif (!$userInfo) {
         $result['status'] = 1;
         $result['msg'] = L('CONTROLLER_MSG36');
     } else {
         if ($model->resetPasswd($username, $passwd)) {
             if ($this->isLogin()) {
                 $this->logout();
             }
             // 重置密码成功, 设置为登录状态
             $this->writeUserInfo($userInfo);
             $result['status'] = 9;
             $result['msg'] = L('CONTROLLER_MSG34');
             $result['url'] = U('Home/Index/index');
         } else {
             $result['status'] = 8;
             $result['msg'] = L('CONTROLLER_MSG49');
         }
     }
     if (IS_AJAX) {
         $this->ajaxReturn($result, 'json');
     } elseif ($result['status'] == 9) {
         //$this->success($result['msg'], $result['url']);
         $this->assign('jumpUrl', $result['url']);
         $this->display('successResetPwd');
     } else {
         $this->error($result['msg']);
     }
 }