Browse Source

替换验证类

master
wanghongjun 3 years ago
parent
commit
b4add0cf66
  1. 18
      app/controller/Passport.php
  2. 1
      app/model/User.php
  3. 66
      app/validate/Passport.php
  4. 10
      app/validate/User.php
  5. 1
      route/app.php

18
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) {

1
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);

66
app/validate/Passport.php

@ -0,0 +1,66 @@
<?php
declare (strict_types = 1);
namespace app\validate;
use think\facade\Db;
use think\Validate;
class Passport extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则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;
}
}

10
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'],
];
/**

1
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(){

Loading…
Cancel
Save