first commit
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
/**
|
||||
+-----------------------------------------------------------------------------------------------
|
||||
* GouGuOPEN [ 左手研发,右手开源,未来可期!]
|
||||
+-----------------------------------------------------------------------------------------------
|
||||
* @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
|
||||
+-----------------------------------------------------------------------------------------------
|
||||
* @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
|
||||
+-----------------------------------------------------------------------------------------------
|
||||
* @Author 勾股工作室 <hdm58@qq.com>
|
||||
+-----------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app\base;
|
||||
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
use think\facade\Request;
|
||||
use think\facade\Session;
|
||||
use think\facade\View;
|
||||
use systematic\Systematic;
|
||||
|
||||
/**
|
||||
* 控制器基础类
|
||||
*/
|
||||
abstract class BaseController
|
||||
{
|
||||
/**
|
||||
* 是否批量验证
|
||||
* @var bool
|
||||
*/
|
||||
protected $batchValidate = false;
|
||||
|
||||
/**
|
||||
* 分页数量
|
||||
* @var string
|
||||
*/
|
||||
protected $pageSize = 20;
|
||||
/**
|
||||
* 控制器中间件
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [];
|
||||
protected $module;
|
||||
protected $controller;
|
||||
protected $action;
|
||||
protected $uid;
|
||||
protected $did;
|
||||
protected $pid;
|
||||
/**
|
||||
* 构造方法
|
||||
* @access public
|
||||
* @param App $app 应用对象
|
||||
*/
|
||||
protected $model;
|
||||
public function __construct()
|
||||
{
|
||||
$this->module = strtolower(app('http')->getName());
|
||||
$this->controller = strtolower(Request::controller());
|
||||
$this->action = strtolower(Request::action());
|
||||
$this->uid = 0;
|
||||
$this->did = 0;
|
||||
$this->pid = 0;
|
||||
// 控制器初始化
|
||||
$this->initialize();
|
||||
}
|
||||
// 初始化
|
||||
protected function initialize()
|
||||
{
|
||||
// 检测权限
|
||||
$this->checkLogin();
|
||||
//每页显示数据量
|
||||
$this->pageSize = Request::param('limit', \think\facade\Config::get('app.page_size'));
|
||||
}
|
||||
|
||||
/**
|
||||
*验证用户登录
|
||||
*/
|
||||
protected function checkLogin()
|
||||
{
|
||||
if ($this->controller !== 'login' && $this->controller !== 'captcha') {
|
||||
$session_admin = get_config('app.session_admin');
|
||||
if (!Session::has($session_admin)) {
|
||||
if (request()->isAjax()) {
|
||||
return to_assign(404, '请先登录');
|
||||
} else {
|
||||
redirect('/home/login/index.html')->send();
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
$this->uid = Session::get($session_admin);
|
||||
$login_admin = get_admin($this->uid);
|
||||
$this->did = $login_admin['did'];
|
||||
$this->pid = $login_admin['pid'];
|
||||
$is_lock = $login_admin['is_lock'];
|
||||
$last_login_time = Db::name('Admin')->where(['id' => $this->uid])->value('last_login_time');
|
||||
$timeDiff = time() - $last_login_time;
|
||||
// 如果超过10小时(36000秒),则用户需要重新登录
|
||||
if ($timeDiff > 36000) {
|
||||
Session::delete($session_admin);
|
||||
redirect('/home/login/index.html')->send();
|
||||
exit;
|
||||
}
|
||||
Db::name('Admin')->where(['id' => $this->uid])->update(['last_login_time' => time()]);
|
||||
if($is_lock==1){
|
||||
redirect('/home/login/lock.html')->send();
|
||||
exit;
|
||||
}
|
||||
View::assign('login_admin', $login_admin);
|
||||
$not_check=['index','leaves','outs','overtimes','trips','message'];
|
||||
// 验证用户访问权限
|
||||
if ($this->module == 'home' && in_array($this->controller, $not_check)) {
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
$regPwd = $login_admin['reg_pwd'];
|
||||
if($regPwd!==''){
|
||||
redirect('/home/index/edit_password.html')->send();
|
||||
exit;
|
||||
}
|
||||
if (!$this->checkAuth()) {
|
||||
if (request()->isAjax()) {
|
||||
return to_assign(405, '你没有权限,请联系管理员或者人事部');
|
||||
} else {
|
||||
redirect('/home/index/role')->send();
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证用户访问权限
|
||||
* @DateTime 2020-12-21
|
||||
* @param string $controller 当前访问控制器
|
||||
* @param string $action 当前访问方法
|
||||
* @return [type]
|
||||
*/
|
||||
protected function checkAuth()
|
||||
{
|
||||
//Cache::delete('RulesSrc' . $uid);
|
||||
$uid = $this->uid;
|
||||
$GOUGU = new Systematic();
|
||||
$GOUGU->auth($uid);
|
||||
$auth_list_all = Cache::get('RulesSrc0');
|
||||
$auth_list = Cache::get('RulesSrc' . $uid);
|
||||
$pathUrl = $this->module . '/' . $this->controller . '/' . $this->action;
|
||||
if (!in_array($pathUrl, $auth_list)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user