| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- use DB;
- use DbCriteria;
- use Useradmin;
- use Yii;
- /**
- * 这个类主要是用来处理admin平台的账号权限
- */
- class LewaimaiAdminPingtaiAuth
- {
- public static $_authIds;
- /**
- * @var array 不需要登入的 routers
- */
- public static array $noLoginRouters = [
- 'site/login',
- ];
- /**
- * @var array 不需要权限检测的 routers
- */
- public static array $noAuthCheckRouters = [
- 'useradmin/info', // 用户信息
- 'useradmin/getroleselect', // 角色下拉列表
- 'useradmin/setting', // 密码修改
- 'useradmin/checkpwd', // 密码修改检测
- ];
- /**
- * @var array 超级管理员才能有操作的 routers
- */
- public static array $superAdminRouters = [
- ];
- public static function getAuth($num = 0)
- {
- if (empty($num)) {
- return false;
- }
- if (is_null(self::$_authIds)) {
- $model = Useradmin::model()->findByPk(Yii::app()->user->_id);
- $authIds = DB::getScalerWithCriteria(
- 'role',
- DbCriteria::simpleCompare(['id' => $model->role_id])->setSelect('auth_ids')
- );
- self::$_authIds = $authIds ? explode(',', $authIds) : [];
- }
- if (in_array($num, self::$_authIds)) {
- return true;
- }
- return false;
- }
- public static function adminAuth($controller, $action)
- {
- // 跳过不需要检测的
- if (in_array($controller, ["site", "common"])) {
- return true;
- }
- $page = strtolower($controller.'/'.$action);
- if (in_array($page, self::$noAuthCheckRouters)) {
- return true;
- }
- /**
- * @var array $pageAuth 权限集开始检测 权限ID 和 asyncRoutes.ts 保持一致
- * @link ./web/src/router/routes/asyncRoutes.ts
- */
- $pageAuth = [
- // =================== 用户及角色管理 =======================
- 'useradmin/rolelist' => 1102, // 角色列表
- 'useradmin/saveroleauth' => 110201, // 菜单权限
- 'useradmin/editrole' => 110202, // 编辑角色
- 'useradmin/deleterole' => 110203, // 删除角色
- 'useradmin/userlist' => 1101, // 用户列表
- 'useradmin/edituser' => 110101, // 编辑用户
- 'useradmin/deleteuser' => 110102, // 删除用户
- // =================== 学校相关 =======================
- 'school/list' => 1201,
- 'school/info' => 1201,
- 'school/add' => 120101,
- 'school/edit' => 120102,
- 'school/updateattr' => 120102,
- 'school/delete' => 120103,
- ];
- return !empty($pageAuth[$page]) && self::getAuth($pageAuth[$page]);
- }
- }
|