UserController.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Controllers\V3;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\V3\StoreUserRequest;
  5. use App\Http\Resources\V3\UserResource;
  6. use App\Services\V3\SignUpService;
  7. /**
  8. * 账号。
  9. *
  10. * store 取代 `POST /v2/sign-up`(`SignUpController@store`)。v2 那份在
  11. * dashboard-v4 下线前原样保留,不要改动。
  12. */
  13. class UserController extends Controller
  14. {
  15. public function __construct(private readonly SignUpService $signUp) {}
  16. /**
  17. * 注册账号
  18. *
  19. * 凭 invite(邀请邮件里的,或 `POST /v3/invites` 换来的)建账号,同时建一个
  20. * 私有的 draft 译文 channel,invite 标为已用。邮箱取自 invite。
  21. *
  22. * 注册不等于登录:返回 201 与新账号,之后用用户名/邮箱 + 密码走登录。
  23. *
  24. * @unauthenticated
  25. *
  26. * @bodyParam invite string required 注册邀请的 uuid
  27. * @bodyParam username string required 用户名,6–32 位字母、数字、下划线
  28. * @bodyParam nickname string 昵称,不传或空白时用 username
  29. * @bodyParam password string required 密码,6–32 位
  30. * @bodyParam password_confirmation string required 再输一次密码
  31. * @bodyParam lang string required 常用译文语言,用作 draft channel 的语言。Example: zh-Hans
  32. *
  33. * @responseStatus 201 已创建
  34. * @responseStatus 429 请求过于频繁
  35. */
  36. public function store(StoreUserRequest $request): UserResource
  37. {
  38. return UserResource::make($this->signUp->register($request->validated()));
  39. }
  40. }