diff --git a/app/controller/Passport.php b/app/controller/Passport.php index 25c859c..f5135e6 100644 --- a/app/controller/Passport.php +++ b/app/controller/Passport.php @@ -8,7 +8,7 @@ use app\model\AdminUser; use app\model\AgentUser; use app\model\Pincode; use app\model\User as UserModel; -use app\validate\User as UserValidate; +use app\validate\Passport as PassportValidate; use think\exception\ValidateException; use think\facade\Cookie; use think\facade\Request; @@ -28,7 +28,7 @@ class Passport extends BaseController try { // 验证用户输入 - validate(UserValidate::class)->scene('register')->check($data); + validate(PassportValidate::class)->scene('register')->check($data); // 验证手机号短信验证码 $userModel = new UserModel(); @@ -41,7 +41,7 @@ class Passport extends BaseController return $this->renderError('邀请码无效'); } - $checkCodeRes = validate(UserValidate::class)->checkCode($phone,$smsCode); + $checkCodeRes = validate(PassportValidate::class)->checkCode($phone,$smsCode); if ($checkCodeRes !== true) { return $this->renderError($checkCodeRes); } @@ -76,7 +76,7 @@ class Passport extends BaseController try { $cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; // 验证用户输入 - validate(UserValidate::class)->scene('login')->check($data); + validate(PassportValidate::class)->scene('login')->check($data); # 验证码验证 if ($count = Cookie::get($cookie_name) ?: 0) { @@ -123,7 +123,7 @@ class Passport extends BaseController $cookie_name = 'send_code'.$_SERVER['HTTP_HOST']; $send_time = 60; - validate(UserValidate::class)->scene('sendCode')->check($data); + validate(PassportValidate::class)->scene('sendCode')->check($data); # 限制短信验证码60发送一次 if ($time = Cookie::get($cookie_name)) { $s = time() - $time; @@ -182,13 +182,13 @@ class Passport extends BaseController try { // 验证用户输入 - validate(UserValidate::class)->scene('retrieve')->check($data); + validate(PassportValidate::class)->scene('retrieve')->check($data); $userModel = new UserModel(); $phone = $data['phone']; $smsCode = $data['sms_code']; - $checkCodeRes = validate(UserValidate::class)->checkCode($phone,$smsCode); + $checkCodeRes = validate(PassportValidate::class)->checkCode($phone,$smsCode); if ($checkCodeRes !== true) { return $this->renderError($checkCodeRes); } @@ -222,7 +222,7 @@ class Passport extends BaseController $cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; // 验证用户输入 - validate(UserValidate::class)->scene('adminLogin')->check($data); + validate(PassportValidate::class)->scene('adminLogin')->check($data); # 验证码验证 if ($count = Cookie::get($cookie_name) ?: 0) { @@ -272,7 +272,7 @@ class Passport extends BaseController $cookie_name = 'login_count'.$_SERVER['HTTP_HOST']; // 验证用户输入 - validate(UserValidate::class)->scene('agentLogin')->check($data); + validate(PassportValidate::class)->scene('agentLogin')->check($data); # 验证码验证 if ($count = Cookie::get($cookie_name) ?: 0) { diff --git a/app/model/User.php b/app/model/User.php index 5360f0f..56acc7e 100644 --- a/app/model/User.php +++ b/app/model/User.php @@ -53,6 +53,7 @@ class User extends Model $user = $this->where('phone', $data['phone'])->field('id,avatar,phone,password,salt')->find(); if ($user) { + if ($user['status'] != 1) return ['status' => false, 'msg' => '用户已被停用']; // 使用相同的盐值对输入密码进行哈希验证 $hashedPassword = $this->generateHashedPassword($data['password'], $user->salt); diff --git a/app/validate/Passport.php b/app/validate/Passport.php new file mode 100644 index 0000000..bd29001 --- /dev/null +++ b/app/validate/Passport.php @@ -0,0 +1,66 @@ + ['规则1','规则2'...] + * + * @var array + */ + protected $rule = [ + 'phone|手机号' => 'require|mobile', + 'password|密码' => 'require|min:6|max:20', + 'sms_code|短信验证码' => 'require', + 'account_number|账号' => 'require|min:4|max:16', + 'user_id|用户id' => 'require|number' + ]; + + /** + * 定义错误信息 + * 格式:'字段名.规则名' => '错误信息' + * + * @var array + */ + protected $message = []; + + protected $scene = [ + 'login' => ['phone','password'], + 'register' => ['phone','password','sms_code'], + 'retrieve' => ['phone','password','sms_code'], + 'modifyPassword' => ['password'], + 'sendCode' => ['phone'], + 'adminLogin' => ['account_number','password'], + 'agentLogin' => ['phone','password'], + ]; + + /** + * 手机号短信验证 + * @param $mobile + * @param $code + * @return bool|string + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function checkCode($mobile,$code) + { + $pin_info = Db::name('pincode')->where('mobile',$mobile)->field('code,time')->find(); + if (empty($pin_info)) { + return '短信验证码错误'; + } + if ($pin_info['time'] < time() - 300) { + return '短信验证码已过期,请重新获取'; + } + if ($code != $pin_info['code']) { + return '短信验证码错误'; + } + return true; + } +} diff --git a/app/validate/User.php b/app/validate/User.php index 64f30c1..f196f49 100644 --- a/app/validate/User.php +++ b/app/validate/User.php @@ -15,10 +15,7 @@ class User extends Validate * @var array */ protected $rule = [ - 'phone|手机号' => 'require|mobile', 'password|密码' => 'require|min:6|max:20', - 'sms_code|短信验证码' => 'require', - 'account_number|账号' => 'require|min:4|max:16', 'user_id|用户id' => 'require|number' ]; @@ -31,14 +28,9 @@ class User extends Validate protected $message = []; protected $scene = [ - 'login' => ['phone','password'], - 'register' => ['phone','password','sms_code'], - 'retrieve' => ['phone','password','sms_code'], 'modifyPassword' => ['password'], - 'sendCode' => ['phone'], - 'adminLogin' => ['account_number','password'], - 'agentLogin' => ['phone','password'], 'editUser' => ['user_id','password'], + 'delUser' => ['user_id'], ]; /** diff --git a/route/app.php b/route/app.php index baa4b12..648f04a 100644 --- a/route/app.php +++ b/route/app.php @@ -36,6 +36,7 @@ Route::group('user',function (){ Route::post('rechargeRecords','user/rechargeRecords')->middleware(CheckUser::class)->allowCrossDomain(); Route::post('consumptionRecords','user/consumptionRecords')->middleware(CheckUser::class)->allowCrossDomain(); Route::post('awardsRecords','user/awardsRecords')->middleware(CheckUser::class)->allowCrossDomain(); + Route::post('userInfo','user/userInfo')->middleware(CheckUser::class)->allowCrossDomain(); }); Route::group('zone',function(){