FirstAccessController.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\FirstAccessCheckRequest;
  4. use App\Http\Requests\FirstAccessRegisterRequest;
  5. use App\Http\Resources\UserResource;
  6. use App\Services\FirstAccessService;
  7. use Illuminate\Http\JsonResponse;
  8. class FirstAccessController extends Controller
  9. {
  10. public function __construct(protected FirstAccessService $service) {}
  11. public function check(FirstAccessCheckRequest $request): JsonResponse
  12. {
  13. $result = $this->service->check($request->validated()['registration']);
  14. $message = in_array($result['status'], FirstAccessService::BLOCKING_STATUSES, true)
  15. ? $this->service->blockedMessage($result['status'])
  16. : null;
  17. return $this->successResponse(payload: $result, message: $message);
  18. }
  19. public function register(FirstAccessRegisterRequest $request): JsonResponse
  20. {
  21. $user = $this->service->register(
  22. $request->validated(),
  23. $request->file('photo'),
  24. );
  25. $canLogin = $user->canLogin();
  26. return $this->successResponse(
  27. payload: [
  28. 'user' => new UserResource($user),
  29. 'can_login' => $canLogin,
  30. 'status' => $user->status,
  31. ],
  32. message: $canLogin
  33. ? __('messages.first_access.register_success')
  34. : __('messages.first_access.register_pending_approval'),
  35. code: 201,
  36. );
  37. }
  38. }