1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- /**
- * Created by PhpStorm.
- * User: 中闽 < 1464674022@qq.com >
- * Date: 2019/12/5
- * Time: 17:44
- */
- namespace app\admin\controller\base;
- use app\admin\model\Urlconfig;
- use app\common\behavior\AdminLogBehavior;
- use app\common\service\WebService;
- use think\Controller;
- use think\Db;
- use think\Hook;
- use think\Session;
- class Permissions extends Controller
- {
- const ADMIN_ID = 'admin';
- const ADMIN_NAME = 'admin_name';
- const ADMIN_CATE_ID = 'admin_cate_id';
- protected function _initialize()
- {
- (new WebService())->checkInstalled();
- Hook::listen('admin_log');
- if ($this->request->isCli()) {
- return;
- }
- //检查ip黑名单
- $black_ip = \app\common\model\Webconfig::getValue('black_ip', 3600);
- if (!empty($black_ip)) {
- $black_ip = explode(',', $black_ip);
- $ip = $this->request->ip();
- if (in_array($ip, $black_ip)) {
- //退出登录
- if (Session::has(self::ADMIN_ID)) {
- Session::delete(self::ADMIN_ID);
- }
- $this->error('你已被封禁!', 'admin/common/login');
- }
- }
- //检查是否登录
- if (!Session::has(self::ADMIN_ID)) {
- if ((new Urlconfig())->isWeekBackend()) {
- $this->redirect('admin/common/login');
- } else {
- abort(404, '404 not found');
- }
- }
- //检查访问的url是否再用户的权限范围内,mysql查询自动忽略了大小写
- $where['module'] = $this->request->module();
- $where['controller'] = $this->request->controller();
- $where['function'] = $this->request->action();
- $where['type'] = 1;//权限节点
- //用户的权限菜单id
- $menus = Db::name('admin_cate')->where('id', Session::get(self::ADMIN_CATE_ID))->value('permissions');
- $menus = explode(',', $menus);
- $string = $this->request->query();
- $param_menu = Db::name('admin_menu')->where($where)->where('parameter', $string)->find();
- if ($param_menu) {
- if (false == in_array($param_menu['id'], $menus)) {
- (new AdminLogBehavior())->updateLastLog("缺少权限");
- $this->error('缺少权限');
- }
- } else if ($string) {
- $menu = Db::name('admin_menu')->where($where)->where('parameter', '')->find();
- if ($menu && !in_array($menu['id'], $menus)) {
- (new AdminLogBehavior())->updateLastLog("缺少权限");
- $this->error('缺少权限');
- }
- }
- if ($this->request->has('check_permission')) {
- $this->success('has permission');
- }
- }
- /**
- * 查询当前用户权限
- * @return array|mixed 菜单id数组
- */
- public function getPermission()
- {
- //用户的权限菜单id
- $menus = Db::name('admin_cate')->where('id', Session::get(self::ADMIN_CATE_ID))->value('permissions');
- $menus = explode(',', $menus);
- return $menus;
- }
- }
|