| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- <?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;
- }
- }
- }
|