2
0

StoreUserRequest.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Http\Requests\V3;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. /**
  5. * `POST /v3/users` 的入参:凭邀请注册账号。
  6. *
  7. * 邮箱不在这里收:它来自 invite,客户端改不了。
  8. * invite 是否可用在 Service 里查(要连带检查邮箱是否已被注册,规则写不干净)。
  9. */
  10. class StoreUserRequest extends FormRequest
  11. {
  12. public function authorize(): bool
  13. {
  14. return true;
  15. }
  16. /**
  17. * @return array<string, array<int, mixed>>
  18. */
  19. public function rules(): array
  20. {
  21. return [
  22. 'invite' => ['required', 'uuid'],
  23. // v2 前端的规则是 6–32 位字母数字下划线,但正则漏了 $,后端也不校验;这里补齐
  24. 'username' => ['required', 'string', 'min:6', 'max:32', 'regex:/^[A-Za-z0-9_]+$/', 'unique:user_infos,username'],
  25. // 不传或空白时用 username
  26. 'nickname' => ['sometimes', 'nullable', 'string', 'max:32'],
  27. 'password' => ['required', 'string', 'min:6', 'max:32', 'confirmed'],
  28. // draft channel 的语言,channels.lang 是 varchar(16)
  29. 'lang' => ['required', 'string', 'max:16'],
  30. ];
  31. }
  32. }