LewaimaiAdminPingtaiAuth.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * 这个类主要是用来处理admin平台的账号权限
  4. */
  5. class LewaimaiAdminPingtaiAuth
  6. {
  7. public static $_authIds;
  8. /**
  9. * @var array 不需要登入的 routers
  10. */
  11. public static array $noLoginRouters = [
  12. 'site/login',
  13. ];
  14. /**
  15. * @var array 不需要权限检测的 routers
  16. */
  17. public static array $noAuthCheckRouters = [
  18. 'useradmin/info', // 用户信息
  19. 'useradmin/getroleselect', // 角色下拉列表
  20. 'useradmin/setting', // 密码修改
  21. 'useradmin/checkpwd' // 密码修改检测
  22. ];
  23. /**
  24. * @var array 超级管理员才能有操作的 routers
  25. */
  26. public static array $superAdminRouters = [
  27. ];
  28. public static function getAuth($num = 0)
  29. {
  30. if (empty($num)) {
  31. return false;
  32. }
  33. if (is_null(self::$_authIds)) {
  34. $model = Useradmin::model()->findByPk(Yii::app()->user->_id);
  35. $authIds = DB::getScalerWithCriteria('role', DbCriteria::simpleCompare(['id' => $model->role_id])->setSelect('auth_ids'));
  36. self::$_authIds = $authIds ? explode(',', $authIds) : [];
  37. }
  38. if (in_array($num, self::$_authIds)) {
  39. return true;
  40. }
  41. return false;
  42. }
  43. public static function adminAuth($controller, $action)
  44. {
  45. // 跳过不需要检测的
  46. if(in_array($controller,["site","common"])){
  47. return true;
  48. }
  49. $page = strtolower($controller . '/' . $action);
  50. if (in_array($page, self::$noAuthCheckRouters)) {
  51. return true;
  52. }
  53. /**
  54. * @var array $pageAuth 权限集开始检测 权限ID 和 asyncRoutes.ts 保持一致
  55. * @link ./web/src/router/routes/asyncRoutes.ts
  56. */
  57. $pageAuth = [
  58. // =================== 用户及角色管理 =======================
  59. 'useradmin/rolelist' => 1102, // 角色列表
  60. 'useradmin/saveroleauth' => 110201, // 菜单权限
  61. 'useradmin/editrole' => 110202, // 编辑角色
  62. 'useradmin/deleterole' => 110203, // 删除角色
  63. 'useradmin/userlist' => 1101, // 用户列表
  64. 'useradmin/edituser' => 110101, // 编辑用户
  65. 'useradmin/deleteuser' => 110102, // 删除用户
  66. // =================== 学校相关 =======================
  67. 'school/list' => 1201,
  68. 'school/info' => 1201,
  69. 'school/add' => 120101,
  70. 'school/edit' => 120102,
  71. 'school/updateattr' => 120102,
  72. 'school/delete' => 120103,
  73. ];
  74. return !empty($pageAuth[$page]) && self::getAuth($pageAuth[$page]);
  75. }
  76. }