mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
95 lines
2.5 KiB
PHP
95 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace app\data\controller\api;
|
|
|
|
use app\data\service\UserAdminService;
|
|
use app\data\service\UserTokenService;
|
|
use think\admin\Controller;
|
|
use think\exception\HttpResponseException;
|
|
|
|
/**
|
|
* 接口授权认证基类
|
|
* Class Auth
|
|
* @package app\data\controller\api
|
|
*/
|
|
abstract class Auth extends Controller
|
|
{
|
|
/**
|
|
* 当前接口请求终端类型
|
|
* >>>>>>>>>>>>>>>>>>>>>>
|
|
* >>> api-name 接口类型
|
|
* >>> api-token 接口认证
|
|
* >>>>>>>>>>>>>>>>>>>>>>
|
|
* --- 手机浏览器访问 wap
|
|
* --- 电脑浏览器访问 web
|
|
* --- 微信小程序访问 wxapp
|
|
* --- 微信服务号访问 wechat
|
|
* --- 苹果应用接口访问 isoapp
|
|
* --- 安卓应用接口访问 android
|
|
* @var string
|
|
*/
|
|
protected $type;
|
|
|
|
/**
|
|
* 当前用户编号
|
|
* @var integer
|
|
*/
|
|
protected $uuid;
|
|
|
|
/**
|
|
* 当前用户数据
|
|
* @var array
|
|
*/
|
|
protected $user;
|
|
|
|
/**
|
|
* 控制器初始化
|
|
*/
|
|
protected function initialize()
|
|
{
|
|
// 检查接口类型
|
|
$this->type = $this->request->header('api-name');
|
|
if (empty($this->type)) $this->error("接口类型异常!");
|
|
if (!isset(UserAdminService::TYPES[$this->type])) {
|
|
$this->error("接口类型[{$this->type}]未定义!");
|
|
}
|
|
// 读取用户数据
|
|
$this->user = $this->getUser();
|
|
$this->uuid = $this->user['id'] ?? '';
|
|
if (empty($this->uuid)) {
|
|
$this->error('用户登录失败!', '{-null-}', 401);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取用户数据
|
|
* @return array
|
|
*/
|
|
protected function getUser(): array
|
|
{
|
|
try {
|
|
if (empty($this->uuid)) {
|
|
$token = $this->request->header('api-token');
|
|
if (empty($token)) $this->error('登录认证不能为空!');
|
|
[$state, $info, $this->uuid] = UserTokenService::check($this->type, $token);
|
|
if (empty($state)) $this->error($info, '{-null-}', 401);
|
|
}
|
|
return UserAdminService::get($this->uuid, $this->type);
|
|
} catch (HttpResponseException $exception) {
|
|
throw $exception;
|
|
} catch (\Exception $exception) {
|
|
trace_file($exception);
|
|
$this->error($exception->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 显示用户禁用提示
|
|
*/
|
|
protected function checkUserStatus()
|
|
{
|
|
if (empty($this->user['status'])) {
|
|
$this->error('账户已被冻结!');
|
|
}
|
|
}
|
|
} |