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