* Date: 2018-4-3 */ namespace app\admin\controller; use app\admin\logic\UpgradeLogic; use think\Controller; use think\Db; use think\response\Json; use think\Session; class Base extends Controller { public $session_id; /** * 析构函数 */ function __construct() { if (!session_id()) { Session::start(); } header("Cache-control: private"); // history.back返回后输入框值丢失问题 parent::__construct(); $this->global_assign(); } /* * 初始化操作 */ public function _initialize() { $this->session_id = session_id(); // 当前的 session_id !defined('SESSION_ID') && define('SESSION_ID', $this->session_id); //将当前的session_id保存为常量,供其它方法调用 parent::_initialize(); //过滤不需要登陆的行为 $ctl_act = CONTROLLER_NAME.'@'.ACTION_NAME; $ctl_all = CONTROLLER_NAME.'@*'; $filter_login_action = config('filter_login_action'); if (in_array($ctl_act, $filter_login_action) || in_array($ctl_all, $filter_login_action)) { //return; }else{ $web_login_expiretime = tpCache('web.web_login_expiretime'); empty($web_login_expiretime) && $web_login_expiretime = config('login_expire'); $admin_login_expire = session('admin_login_expire'); // 登录有效期web_login_expiretime if (session('?admin_id') && getTime() - intval($admin_login_expire) < $web_login_expiretime) { session('admin_login_expire', getTime()); // 登录有效期 $this->check_priv();//检查管理员菜单操作权限 }else{ /*自动退出*/ adminLog('自动退出'); session_unset(); session::clear(); cookie('admin-treeClicked', null); // 清除并恢复栏目列表的展开方式 /*--end*/ if (IS_AJAX) { $this->error('登录超时!'); } else { $url = request()->baseFile().'?s=Admin/login'; $this->redirect($url); } } } /* 增、改的跳转提示页,只限制于发布文档的模型和自定义模型 */ $channeltype_list = config('global.channeltype_list'); $controller_name = $this->request->controller(); if (isset($channeltype_list[strtolower($controller_name)]) || 'Custom' == $controller_name) { if (in_array($this->request->action(), ['add','edit'])) { \think\Config::set('dispatch_success_tmpl', 'public/dispatch_jump'); $id = input('param.id/d', input('param.aid/d')); ('GET' == $this->request->method()) && cookie('ENV_IS_UPHTML', 0); } else if (in_array($this->request->action(), ['index'])) { cookie('ENV_GOBACK_URL', $this->request->url()); cookie('ENV_LIST_URL', request()->baseFile()."?m=admin&c={$controller_name}&a=index&lang=".$this->admin_lang); } } if ('Archives' == $controller_name && in_array($this->request->action(), ['index_archives'])) { cookie('ENV_GOBACK_URL', $this->request->url()); cookie('ENV_LIST_URL', request()->baseFile()."?m=admin&c=Archives&a=index_archives&lang=".$this->admin_lang); } /* end */ /*会员投稿设置*/ $IsOpenRelease = Db::name('users_menu')->where([ 'mca' => 'user/UsersRelease/release_centre', 'lang' => $this->admin_lang, ])->getField('status'); $this->assign('IsOpenRelease',$IsOpenRelease); /* END */ } public function check_priv() { $ctl = CONTROLLER_NAME; $act = ACTION_NAME; $ctl_act = $ctl.'@'.$act; $ctl_all = $ctl.'@*'; //无需验证的操作 $uneed_check_action = config('uneed_check_action'); if (0 >= intval(session('admin_info.role_id'))) { //超级管理员无需验证 return true; } else { $bool = false; /*检测是否有该权限*/ if (is_check_access($ctl_act)) { $bool = true; } /*--end*/ /*在列表中的操作不需要验证权限*/ if (IS_AJAX || strpos($act,'ajax') !== false || in_array($ctl_act, $uneed_check_action) || in_array($ctl_all, $uneed_check_action)) { $bool = true; } /*--end*/ //检查是否拥有此操作权限 if (!$bool) { $this->error('您没有操作权限,请联系超级管理员分配权限'); } } } /** * 保存系统设置 */ public function global_assign() { $this->assign('global', tpCache('global')); } /** * 多语言功能操作权限 */ public function language_access() { if (is_language() && $this->main_lang != $this->admin_lang) { $lang_title = model('Language')->where('mark',$this->main_lang)->value('title'); $this->error('当前语言没有此功能,请切换到【'.$lang_title.'】语言'); } } }