65 lines
2.4 KiB
PHP
65 lines
2.4 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
use think\Db;
|
||
use think\Model;
|
||
|
||
class UserToken extends Model
|
||
{
|
||
// 检测登录
|
||
public function check_login_token($token)
|
||
{
|
||
if (empty($token)) {
|
||
return ['code' => 301, 'msg' => '登录失效', 'data' =>null];
|
||
}
|
||
$user_token = $this->where('token', $token)->find();
|
||
if (empty($user_token)) {
|
||
return ['code' => 301, 'msg' => '登录失效', 'data' => null];
|
||
}
|
||
if ($user_token['expiretime'] < time()) {
|
||
return ['code' => 301, 'msg'=> '登录失效', 'data' => null];
|
||
}
|
||
|
||
$block1 = db::name('block')->where(['type' => 1,'type_text' => $user_token['user_id']])->find();
|
||
$userState = db::name('user')->where(['id' => $user_token['user_id']])->value('status');
|
||
if(isset($block1) && $userState == 2){
|
||
return ['code' => 204, 'msg'=> '账号已被封禁,请联系管理员','data' => null];
|
||
}
|
||
$login_device = request()->header('deviceId');
|
||
$block2 = db::name('block')->where(['type' => 2,'type_text' => $login_device])->find();
|
||
if(isset($block2)){
|
||
return ['code' => 205, 'msg'=> '设备已被封禁,请联系管理员','data' => null];
|
||
}
|
||
$Ip = request()->ip();
|
||
$block3 = db::name('block')->where(['type' => 3,'type_text' => $Ip])->find();
|
||
if(isset($block3)){
|
||
return ['code' => 206, 'msg'=> 'IP已被封禁,请联系管理员','data' => null];
|
||
}
|
||
|
||
return ['code' => 1, 'msg'=> '成功','data' => $user_token['user_id']];
|
||
}
|
||
|
||
//更新token
|
||
public function update_token($user_id)
|
||
{
|
||
$token =md5($user_id . date('YmdHis') . generateRandom(32));
|
||
$expiretime = time() + 3600 * 24 * 7;
|
||
$data_token = $this->where('user_id', $user_id)->find();
|
||
if(empty($data_token)){
|
||
$data_token = [];
|
||
$data_token['user_id'] = $user_id;
|
||
$data_token['token'] = $token;
|
||
$data_token['expiretime'] = $expiretime;
|
||
if(!($this->save($data_token))){
|
||
return ['code' => 0, 'msg'=> 'token更新失败'];
|
||
}
|
||
}else{
|
||
if(!($this->where('user_id', $user_id)->update(['token' => $token, 'expiretime' => $expiretime]))){
|
||
return ['code' => 0, 'msg'=> 'token更新失败'];
|
||
}
|
||
}
|
||
|
||
return $token;
|
||
}
|
||
|
||
} |