| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace App\Controllers;
- use App\Models\User;
- use App\Models\PasswordReset;
- use App\Services\Password;
- use App\Utils\Hash;
- /***
- * Class Password
- * @package App\Controllers
- * 密码重置
- */
- class PasswordController extends BaseController
- {
- public function reset()
- {
- return $this->view()->display('password/reset.tpl');
- }
- public function handleReset($request, $response, $args)
- {
- $email = $request->getParam('email');
- // check limit
- // send email
- $user = User::where('email', $email)->first();
- if ($user == null) {
- $rs['ret'] = 0;
- $rs['msg'] = '此邮箱不存在.';
- return $response->getBody()->write(json_encode($rs));
- }
- Password::sendResetEmail($email);
- $rs['ret'] = 1;
- $rs['msg'] = '重置邮件已经发送,请检查邮箱.';
- return $response->getBody()->write(json_encode($rs));
- }
- public function token($request, $response, $args)
- {
- $token = $args['token'];
- return $this->view()->assign('token', $token)->display('password/token.tpl');
- }
- public function handleToken($request, $response, $args)
- {
- $tokenStr = $args['token'];
- $password = $request->getParam('password');
- $repasswd = $request->getParam('repasswd');
-
- if ($password != $repasswd) {
- $res['ret'] = 0;
- $res['msg'] = "两次输入不符合";
- return $response->getBody()->write(json_encode($res));
- }
- if (strlen($password) < 8) {
- $res['ret'] = 0;
- $res['msg'] = "密码太短啦";
- return $response->getBody()->write(json_encode($res));
- }
-
- // check token
- $token = PasswordReset::where('token', $tokenStr)->first();
- if ($token == null || $token->expire_time < time()) {
- $rs['ret'] = 0;
- $rs['msg'] = '链接已经失效,请重新获取';
- return $response->getBody()->write(json_encode($rs));
- }
- $user = User::where('email', $token->email)->first();
- if ($user == null) {
- $rs['ret'] = 0;
- $rs['msg'] = '链接已经失效,请重新获取';
- return $response->getBody()->write(json_encode($rs));
- }
- // reset password
- $hashPassword = Hash::passwordHash($password);
- $user->pass = $hashPassword;
- $user->ga_enable = 0;
- if (!$user->save()) {
- $rs['ret'] = 0;
- $rs['msg'] = '重置失败,请重试';
- return $response->getBody()->write(json_encode($rs));
- }
- $rs['ret'] = 1;
- $rs['msg'] = '重置成功';
-
- $user->clean_link();
-
- return $response->getBody()->write(json_encode($rs));
- }
- }
|