LewaimaiAdminPingtaiAuth.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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/setting', // 密码修改
  20. 'useradmin/checkpwd' // 密码修改检测
  21. ];
  22. /**
  23. * @var array 超级管理员才能有操作的 routers
  24. */
  25. public static array $superAdminRouters = [
  26. ];
  27. public static function getAuth($num = 0)
  28. {
  29. if (empty($num)) {
  30. return false;
  31. }
  32. if (is_null(self::$_authIds)) {
  33. $model = Useradmin::model()->findByPk(Yii::app()->user->_id);
  34. $authIds = DB::getScalerWithCriteria('role', DbCriteria::simpleCompare(['id' => $model->role_id])->setSelect('auth_ids'));
  35. self::$_authIds = $authIds ? explode(',', $authIds) : [];
  36. }
  37. if (in_array($num, self::$_authIds)) {
  38. return true;
  39. }
  40. return false;
  41. }
  42. public static function adminAuth($controller, $action)
  43. {
  44. // 跳过不需要检测的
  45. if(in_array($controller,["site","common"])){
  46. return true;
  47. }
  48. $page = strtolower($controller . '/' . $action);
  49. if (in_array($page, self::$noAuthCheckRouters)) {
  50. return true;
  51. }
  52. /**
  53. * @var array $pageAuth 权限集开始检测 权限ID 和 asyncRoutes.ts 保持一致
  54. * @link ./web/src/router/routes/asyncRoutes.ts
  55. */
  56. $pageAuth = [
  57. // =================== 用户及角色管理 =======================
  58. 'useradmin/rolelist' => 1102, // 角色列表
  59. 'useradmin/saveroleauth' => 110201,
  60. 'useradmin/editrole' => 110202,
  61. 'useradmin/deleterole' => 110203,
  62. 'useradmin/userlist' => 1101,
  63. 'useradmin/edituser' => 110101,
  64. 'useradmin/deleteuser' => 110102,
  65. ];
  66. return !empty($pageAuth[$page]) && self::getAuth($pageAuth[$page]);
  67. }
  68. }