AdminValidate.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | likeadmin快速开发前后端分离管理后台(PHP版)
  4. // +----------------------------------------------------------------------
  5. // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
  6. // | 开源版本可自由商用,可去除界面版权logo
  7. // | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
  8. // | github下载:https://github.com/likeshop-github/likeadmin
  9. // | 访问官网:https://www.likeadmin.cn
  10. // | likeadmin团队 版权所有 拥有最终解释权
  11. // +----------------------------------------------------------------------
  12. // | author: likeadminTeam
  13. // +----------------------------------------------------------------------
  14. namespace app\adminapi\validate\auth;
  15. use app\common\validate\BaseValidate;
  16. use app\common\model\auth\Admin;
  17. /**
  18. * 管理员验证
  19. * Class AdminValidate
  20. * @package app\adminapi\validate\auth
  21. */
  22. class AdminValidate extends BaseValidate
  23. {
  24. protected $rule = [
  25. 'id' => 'require|checkAdmin',
  26. 'account' => 'require|length:1,32|unique:'.Admin::class,
  27. 'name' => 'require|length:1,16|unique:'.Admin::class,
  28. 'password' => 'require|length:6,32|edit',
  29. 'password_confirm' => 'requireWith:password|confirm',
  30. 'role_id' => 'require',
  31. 'disable' => 'require|in:0,1|checkAbleDisable',
  32. 'multipoint_login' => 'require|in:0,1',
  33. ];
  34. protected $message = [
  35. 'id.require' => '管理员id不能为空',
  36. 'account.require' => '账号不能为空',
  37. 'account.length' => '账号长度须在1-32位字符',
  38. 'account.unique' => '账号已存在',
  39. 'password.require' => '密码不能为空',
  40. 'password.length' => '密码长度须在6-32位字符',
  41. 'password_confirm.requireWith' => '确认密码不能为空',
  42. 'password_confirm.confirm' => '两次输入的密码不一致',
  43. 'name.require' => '名称不能为空',
  44. 'name.length' => '名称须在1-16位字符',
  45. 'name.unique' => '名称已存在',
  46. 'role_id.require' => '请选择角色',
  47. 'disable.require' => '请选择状态',
  48. 'disable.in' => '状态值错误',
  49. 'multipoint_login.require' => '请选择是否支持多处登录',
  50. 'multipoint_login.in' => '多处登录状态值为误',
  51. ];
  52. /**
  53. * @notes 添加场景
  54. * @return AdminValidate
  55. * @author 段誉
  56. * @date 2021/12/29 15:46
  57. */
  58. public function sceneAdd()
  59. {
  60. return $this->remove(['password', 'edit'])
  61. ->remove('id', true)
  62. ->remove('disable', true);
  63. }
  64. /**
  65. * @notes 详情场景
  66. * @return AdminValidate
  67. * @author 段誉
  68. * @date 2021/12/29 15:46
  69. */
  70. public function sceneDetail()
  71. {
  72. return $this->only(['id']);
  73. }
  74. /**
  75. * @notes 编辑场景
  76. * @return AdminValidate
  77. * @author 段誉
  78. * @date 2021/12/29 15:47
  79. */
  80. public function sceneEdit()
  81. {
  82. return $this->remove('password', 'require|length')
  83. ->append('id', 'require|checkAdmin')
  84. ->remove('role_id', 'require')
  85. ->append('role_id', 'checkRole');
  86. }
  87. /**
  88. * @notes 删除场景
  89. * @return AdminValidate
  90. * @author 段誉
  91. * @date 2021/12/29 15:47
  92. */
  93. public function sceneDelete()
  94. {
  95. return $this->only(['id']);
  96. }
  97. /**
  98. * @notes 编辑情况下,检查是否填密码
  99. * @param $value
  100. * @param $rule
  101. * @param $data
  102. * @return bool|string
  103. * @author 段誉
  104. * @date 2021/12/29 10:19
  105. */
  106. public function edit($value, $rule, $data)
  107. {
  108. if (empty($data['password']) && empty($data['password_confirm'])) {
  109. return true;
  110. }
  111. $len = strlen($value);
  112. if ($len < 6 || $len > 32) {
  113. return '密码长度须在6-32位字符';
  114. }
  115. return true;
  116. }
  117. /**
  118. * @notes 检查指定管理员是否存在
  119. * @param $value
  120. * @return bool|string
  121. * @author 段誉
  122. * @date 2021/12/29 10:19
  123. */
  124. public function checkAdmin($value)
  125. {
  126. $admin = Admin::findOrEmpty($value);
  127. if ($admin->isEmpty()) {
  128. return '管理员不存在';
  129. }
  130. return true;
  131. }
  132. /**
  133. * @notes 禁用校验
  134. * @param $value
  135. * @param $rule
  136. * @param $data
  137. * @return bool|string
  138. * @author 段誉
  139. * @date 2022/8/11 9:59
  140. */
  141. public function checkAbleDisable($value, $rule, $data)
  142. {
  143. $admin = Admin::findOrEmpty($data['id']);
  144. if ($admin->isEmpty()) {
  145. return '管理员不存在';
  146. }
  147. if ($value && $admin['root']) {
  148. return '超级管理员不允许被禁用';
  149. }
  150. return true;
  151. }
  152. /**
  153. * @notes 校验角色
  154. * @param $value
  155. * @param $rule
  156. * @param $data
  157. * @return bool|string
  158. * @author 段誉
  159. * @date 2023/9/6 16:58
  160. */
  161. public function checkRole($value, $rule, $data)
  162. {
  163. $admin = Admin::findOrEmpty($data['id']);
  164. if ($admin->isEmpty()) {
  165. return '管理员不存在';
  166. }
  167. if ($admin['root']) {
  168. return true;
  169. }
  170. if (empty($data['role_id'])) {
  171. return '请选择角色';
  172. }
  173. return true;
  174. }
  175. }