RoleValidate.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeshop100%开源免费商用商城系统
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | 开源版本可自由商用,可去除界面版权logo
  7. // | 商业版本务必购买商业授权,以免引起法律纠纷
  8. // | 禁止对系统程序代码以任何目的,任何形式的再发布
  9. // | gitee下载:https://gitee.com/likeshop_gitee
  10. // | github下载:https://github.com/likeshop-github
  11. // | 访问官网:https://www.likeshop.cn
  12. // | 访问社区:https://home.likeshop.cn
  13. // | 访问手册:http://doc.likeshop.cn
  14. // | 微信公众号:likeshop技术社区
  15. // | likeshop团队 版权所有 拥有最终解释权
  16. // +----------------------------------------------------------------------
  17. // | author: likeshopTeam
  18. // +----------------------------------------------------------------------
  19. namespace app\adminapi\validate\auth;
  20. use app\adminapi\logic\auth\AuthLogic;
  21. use app\common\{
  22. model\Role,
  23. model\Admin,
  24. validate\BaseValidate
  25. };
  26. /**
  27. * 角色验证器
  28. * Class RoleValidate
  29. * @package app\adminapi\validate\auth
  30. */
  31. class RoleValidate extends BaseValidate
  32. {
  33. protected $rule = [
  34. 'id' => 'require|checkRole',
  35. 'name' => 'require|max:64|unique:'.Role::class.',name',
  36. 'auth_keys' => 'array|checkAuth',
  37. ];
  38. protected $message = [
  39. 'id.require' => '请选择角色',
  40. 'name.require' => '请输入角色名称',
  41. 'name.max' => '角色名称最长为16个字符',
  42. 'name.unique' => '角色名称已存在',
  43. 'auth_keys.array' => '权限格式错误'
  44. ];
  45. public function sceneAdd()
  46. {
  47. return $this->only(['name', 'auth_keys']);
  48. }
  49. public function sceneDetail()
  50. {
  51. return $this->only(['id']);
  52. }
  53. public function sceneDel()
  54. {
  55. return $this->only(['id'])
  56. ->append('id', 'checkAdmin');
  57. }
  58. //验证角色是否存在
  59. public function checkRole($value,$rule,$data)
  60. {
  61. if (!Role::find($value)) {
  62. return '角色不存在';
  63. }
  64. return true;
  65. }
  66. //验证角色是否被使用
  67. public function checkAdmin($value,$rule,$data)
  68. {
  69. if (Admin::where(['role_id'=>$value])->find()) {
  70. return '有管理员在使用该角色,不允许删除';
  71. }
  72. return true;
  73. }
  74. //验证权限数据是否完整
  75. public function checkAuth($value,$rule,$data)
  76. {
  77. $configAuth = AuthLogic::getAuth();
  78. foreach ($value as $postAuth){
  79. $keyList = explode('/',$postAuth);
  80. if(empty($keyList)){
  81. return '权限数据错误';
  82. }
  83. $keys = explode('.',$keyList[1] ?? '');
  84. if(count($keys) < 2){
  85. return '权限数据错误';
  86. }
  87. $auth = $configAuth[$keyList[0]][$keys[0]][$keys[1]] ?? [];
  88. if(empty($auth)){
  89. return '权限数据错误';
  90. }
  91. }
  92. return true;
  93. }
  94. }