123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- /**
- * 易优CMS
- * ============================================================================
- * 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.eyoucms.com
- * ----------------------------------------------------------------------------
- * 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
- * ============================================================================
- * Author: 小虎哥 <1105415366@qq.com>
- * 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.'】语言');
- }
- }
- }
|