app = $app; $this->request = $this->app->request; $this->module = strtolower(app('http')->getName()); $this->controller = strtolower($this->request->controller()); $this->action = strtolower($this->request->action()); $this->uid = 0; $this->did = 0; $this->pid = 0; // 控制器初始化 $this->initialize(); } // 初始化 protected function initialize() { // 检测权限 $this->checkLogin(); } /** *验证用户登录 */ protected function checkLogin() { if ($this->controller !== 'login' && $this->controller !== 'captcha') { $session_admin = get_config('app.session_admin'); if (!Session::has($session_admin)) { if ($this->request->isAjax()) { return to_assign(404, '请先登录'); } else { redirect('/home/login/index.html')->send(); exit; } } else { $this->uid = Session::get($session_admin); $login_admin = Db::name('Admin')->where(['id' => $this->uid])->find(); $this->did = $login_admin['did']; $this->pid = $login_admin['position_id']; View::assign('login_admin', $login_admin); $is_lock = $login_admin['is_lock']; if($is_lock==1){ redirect('/home/login/lock.html')->send(); exit; } // 验证用户访问权限 if (($this->module == 'api') || ($this->module == 'message') || ($this->module == 'home' && $this->controller == 'index')) { return true; } else{ $reg_pwd = $login_admin['reg_pwd']; if($reg_pwd!==''){ redirect('/home/index/edit_password.html')->send(); exit; } if (!$this->checkAuth()) { if ($this->request->isAjax()) { return to_assign(405, '你没有权限,请联系管理员或者HR'); } else { echo '
你没有权限访问,请联系管理员或者人事部
';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; } } }