Commit 44347432 authored by wangzhengwen's avatar wangzhengwen

restpassword

parent 43bb42d2
...@@ -5,10 +5,13 @@ namespace app\api\controller; ...@@ -5,10 +5,13 @@ namespace app\api\controller;
use app\api\validate\UserValidate; use app\api\validate\UserValidate;
use app\BaseController; use app\BaseController;
use app\Request; use app\Request;
use think\facade\Cache;
use tool\SendSms; use tool\SendSms;
class Sms extends BaseController class Sms extends BaseController
{ {
const TOKEN_PREFIX = 'sms_token:';
public function sendSms(Request $request) public function sendSms(Request $request)
{ {
...@@ -18,9 +21,11 @@ class Sms extends BaseController ...@@ -18,9 +21,11 @@ class Sms extends BaseController
return $vo; return $vo;
} }
$data = $request->param(); $data = $request->param();
$code = str_pad(random_int(0, 9999), 4, '0', STR_PAD_LEFT); $code = str_pad(random_int(0, 9999), 4, '0', STR_PAD_LEFT);
// halt($code); // halt($code);
$SMS = new SendSms(); $SMS = new SendSms();
......
...@@ -4,6 +4,7 @@ namespace app\api\controller; ...@@ -4,6 +4,7 @@ namespace app\api\controller;
use app\api\service\TokenService; use app\api\service\TokenService;
use app\api\service\UserService; use app\api\service\UserService;
use app\api\service\UtilService;
use app\api\validate\UserValidate; use app\api\validate\UserValidate;
use app\BaseController; use app\BaseController;
use app\Request; use app\Request;
...@@ -52,7 +53,7 @@ class User extends BaseController ...@@ -52,7 +53,7 @@ class User extends BaseController
public function register(Request $request) public function register(Request $request)
{ {
$vo = (new UserValidate())->goCheck(); $vo = (new UserValidate())->goCheck(['name','mobile','password','code']);
if ($vo !== true) { if ($vo !== true) {
return $vo; return $vo;
} }
...@@ -64,6 +65,12 @@ class User extends BaseController ...@@ -64,6 +65,12 @@ class User extends BaseController
return $this->returnMsg('用户已存在',0); return $this->returnMsg('用户已存在',0);
} }
$checkSmsCode = UtilService::checkSmsCode($data['mobile'],$data['code']);
if (!$checkSmsCode)
{
return $this->returnMsg('验证码错误');
}
$user['username'] = $data['name']; $user['username'] = $data['name'];
$user['mobile'] = $data['mobile']; $user['mobile'] = $data['mobile'];
$user['salt'] = random(4); $user['salt'] = random(4);
...@@ -87,21 +94,32 @@ class User extends BaseController ...@@ -87,21 +94,32 @@ class User extends BaseController
} }
$data = $request->param(); $data = $request->param();
$checkSmsCode = UtilService::checkSmsCode($data['str'],$data['code']);
if (!$checkSmsCode)
{
return $this->returnMsg('验证码错误');
}
$user = userModel::where(['mobile' => $data['str']])->whereOr(['username'=>$data['str']])->find(); $user = userModel::where(['mobile' => $data['str']])->whereOr(['username'=>$data['str']])->find();
if (!$user) if (!$user)
{ {
return $this->returnMsg('用户不存在',0); return $this->returnMsg('用户不存在',0);
} }
// 生成重置令牌并设置过期时间(如10分钟)
$resetToken = md5(uniqid().$user['id'].time());
cache('reset_token_'.$user['id'], $resetToken, 600); // 10分钟有效期
//sms //sms
return $this->returnMsg('success',1); return $this->returnMsg('success',1, ['reset_token' => $resetToken]);
} }
public function restUserPasswordStep2(Request $request) public function restUserPasswordStep2(Request $request)
{ {
$vo = (new UserValidate())->goCheck(['str','confirm_password','password']); $vo = (new UserValidate())->goCheck(['str','confirm_password','password','reset_token']);
if ($vo !== true) { if ($vo !== true) {
return $vo; return $vo;
} }
...@@ -113,10 +131,18 @@ class User extends BaseController ...@@ -113,10 +131,18 @@ class User extends BaseController
{ {
return $this->returnMsg('用户不存在',0); return $this->returnMsg('用户不存在',0);
} }
// 验证重置令牌
$storedToken = cache('reset_token_'.$user['id']);
if (!$storedToken || $storedToken !== $data['reset_token']) {
return $this->returnMsg('无效的重置令牌或已过期', 0);
}
$update['password'] = md5($data['password'].$user['salt']); $update['password'] = md5($data['password'].$user['salt']);
userModel::where(['id'=>$user['id']])->update($update); userModel::where(['id'=>$user['id']])->update($update);
// 清除重置令牌
cache('reset_token_'.$user['id'], null);
//销毁token //销毁token
TokenService::deleteToken($user['token']); TokenService::deleteToken($user['token']);
......
...@@ -2,8 +2,14 @@ ...@@ -2,8 +2,14 @@
namespace app\api\service; namespace app\api\service;
use think\facade\Cache;
class UtilService class UtilService
{ {
const TOKEN_PREFIX = 'sms_token:';
// public static function generateOrderNo($userId = 0,$str=null) // public static function generateOrderNo($userId = 0,$str=null)
// { // {
// $microtime = microtime(true); // $microtime = microtime(true);
...@@ -65,4 +71,14 @@ class UtilService ...@@ -65,4 +71,14 @@ class UtilService
return $result; return $result;
} }
public static function checkSmsCode($mobile, $code)
{
$cacheCode = Cache::get(self::TOKEN_PREFIX.$mobile);
if ($code!=$cacheCode)
{
return false;
}
return true;
}
} }
\ No newline at end of file
...@@ -23,6 +23,7 @@ class UserValidate extends BaseValidate ...@@ -23,6 +23,7 @@ class UserValidate extends BaseValidate
'idcard_h'=>'require', 'idcard_h'=>'require',
'amount'=>'require|chenckAmount', 'amount'=>'require|chenckAmount',
'txType'=>'require', 'txType'=>'require',
'reset_token'=>'require',
]; ];
protected $message = [ protected $message = [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment