130 lines
3.2 KiB
PHP
130 lines
3.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace app\common\controller;
|
||
|
|
||
|
|
||
|
use app\common\library\Auth;
|
||
|
use app\common\library\Virtual;
|
||
|
use think\Config;
|
||
|
use think\exception\HttpResponseException;
|
||
|
use think\exception\ValidateException;
|
||
|
use think\Hook;
|
||
|
use think\Lang;
|
||
|
use think\Loader;
|
||
|
use think\Request;
|
||
|
use think\Response;
|
||
|
use think\Route;
|
||
|
use think\Validate;
|
||
|
class AdminApi
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* @var Request Request 实例
|
||
|
*/
|
||
|
protected $request;
|
||
|
|
||
|
/**
|
||
|
* @var bool 验证失败是否抛出异常
|
||
|
*/
|
||
|
protected $failException = false;
|
||
|
|
||
|
/**
|
||
|
* @var bool 是否批量验证
|
||
|
*/
|
||
|
protected $batchValidate = false;
|
||
|
|
||
|
/**
|
||
|
* @var array 前置操作方法列表
|
||
|
*/
|
||
|
protected $beforeActionList = [];
|
||
|
|
||
|
/**
|
||
|
* 无需登录的方法,同时也就不需要鉴权了
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $noNeedLogin = [];
|
||
|
|
||
|
/**
|
||
|
* 无需鉴权的方法,但需要登录
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $noNeedRight = [];
|
||
|
|
||
|
/**
|
||
|
* 权限Auth
|
||
|
* @var Auth
|
||
|
*/
|
||
|
protected $auth = null;
|
||
|
|
||
|
/**
|
||
|
* 默认响应输出类型,支持json/xml
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $responseType = 'json';
|
||
|
|
||
|
/**
|
||
|
* 构造方法
|
||
|
* @access public
|
||
|
* @param Request $request Request 对象
|
||
|
*/
|
||
|
public function __construct(Request $request = null)
|
||
|
{
|
||
|
$this->request = is_null($request) ? Request::instance() : $request;
|
||
|
|
||
|
// 控制器初始化
|
||
|
$this->_initialize();
|
||
|
|
||
|
// 前置操作方法
|
||
|
if ($this->beforeActionList) {
|
||
|
foreach ($this->beforeActionList as $method => $options) {
|
||
|
is_numeric($method) ?
|
||
|
$this->beforeAction($options) :
|
||
|
$this->beforeAction($method, $options);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
protected $needUrlLock = [];
|
||
|
|
||
|
protected function setUrlLock($url_key="",$url_suffix="",$model=null){
|
||
|
if(($this->request->isPost() || (!empty($this->needUrlLock) && in_array($this->request->action(),$this->needUrlLock))) && (!empty($this->model) || $model)){
|
||
|
$user_id = 0;
|
||
|
$user = $this->auth->getUser();//登录用户
|
||
|
if($user)$user_id = $user['id'];
|
||
|
|
||
|
$modulename = $this->request->module();
|
||
|
$controllername = Loader::parseName($this->request->controller());
|
||
|
$actionname = strtolower($this->request->action());
|
||
|
$path = $modulename . '/' . str_replace('.', '/', $controllername) . '/' . $actionname;
|
||
|
if(!$model){
|
||
|
$this->model::$url_lock_key = $url_key ?: $user_id;
|
||
|
$this->model::$url_lock_suffix = $url_suffix ?: $path."lock-suffix";
|
||
|
$this->model::$url_lock = true;
|
||
|
}else{
|
||
|
$model::$url_lock_key = $url_key ?: $user_id;
|
||
|
$model::$url_lock_suffix = $url_suffix ?: $path."lock-suffix";
|
||
|
$model::$url_lock = true;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 初始化操作
|
||
|
* @access protected
|
||
|
*/
|
||
|
protected function _initialize()
|
||
|
{
|
||
|
//跨域请求检测
|
||
|
check_cors_request();
|
||
|
|
||
|
// 检测IP是否允许
|
||
|
check_ip_allowed();
|
||
|
|
||
|
//移除HTML标签
|
||
|
$this->request->filter('trim,strip_tags,htmlspecialchars');
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|