AdminUserRequest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Models\AdminUser;
  4. use Illuminate\Support\Arr;
  5. use Illuminate\Support\Facades\Storage;
  6. class AdminUserRequest extends FormRequest
  7. {
  8. /**
  9. * Get the validation rules that apply to the request.
  10. *
  11. * @return array
  12. */
  13. public function rules()
  14. {
  15. $user = $this->userResource();
  16. $id = (int) optional($user)->id;
  17. $rules = [
  18. 'account' => 'required|max:100|unique:admin_users,account,'.$id,
  19. 'name' => 'required|max:100',
  20. 'avatar' => 'nullable|string|max:255',
  21. 'job_number' => 'required|max:6|min:3|unique:admin_users,job_number,'.$id,
  22. 'status' => 'required|boolean',
  23. 'phone' => 'required',
  24. 'password' => 'required|between:6,20|confirmed',
  25. 'roles' => 'array',
  26. 'areas' => 'array',
  27. 'roles.*' => 'exists:admin_roles,id',
  28. 'permissions' => 'array',
  29. 'permissions.*' => 'exists:admin_permissions,id',
  30. ];
  31. if ($this->isMethod('put')) {
  32. $rules = Arr::only($rules, $this->keys());
  33. // 如果更新时, 没填密码, 则不用验证
  34. if (!$this->post('password')) {
  35. unset($rules['password']);
  36. }
  37. // 处理更新时,图片没有改,则不用验证
  38. if ($this->input('avatar') === Storage::disk('uploads')->url($user->avatar)) {
  39. unset($rules['avatar']);
  40. }
  41. }
  42. return $rules;
  43. }
  44. /**
  45. * @return AdminUser
  46. */
  47. public function userResource()
  48. {
  49. return $this->route('admin_user');
  50. }
  51. public function attributes()
  52. {
  53. return [
  54. 'account' => '账号',
  55. 'name' => '姓名',
  56. 'password' => '密码',
  57. 'job_number' => '工号',
  58. 'status' => '状态',
  59. 'pid' => '父id',
  60. 'phone' => '手机号',
  61. 'roles' => '角色',
  62. 'areas' => '区域',
  63. 'roles.*' => '角色',
  64. 'permissions' => '权限',
  65. 'permissions.*' => '权限',
  66. 'avatar' => '头像',
  67. ];
  68. }
  69. }