AuthController.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\DataTransferObjects\AuthDto;
  4. use App\Http\Requests\AuthRequest;
  5. use App\Http\Requests\RefreshTokenRequest;
  6. use Illuminate\Http\JsonResponse;
  7. use App\Http\Resources\AuthResource;
  8. use App\Services\AuthService;
  9. use App\DataTransferObjects\RefreshTokenDto;
  10. use Illuminate\Http\Request;
  11. class AuthController extends Controller
  12. {
  13. public function __construct(
  14. protected AuthService $authService,
  15. ) {
  16. }
  17. public function login(AuthRequest $request): JsonResponse
  18. {
  19. $tokens = $this->authService->login(AuthDto::fromRequest($request));
  20. if (!$tokens) {
  21. return $this->errorResponse(message: __('auth.failed'), code: 401);
  22. }
  23. return $this->successResponse(payload: new AuthResource($tokens), message: __('auth.logged_in'));
  24. }
  25. public function logout(): JsonResponse
  26. {
  27. $this->authService->logout();
  28. return $this->successResponse(message: __('auth.logout'));
  29. }
  30. public function refresh(RefreshTokenRequest $request): JsonResponse
  31. {
  32. $tokens = $this->authService->refresh(RefreshTokenDto::fromRequest($request));
  33. if (is_null($tokens)) {
  34. return $this->errorResponse(message: __('auth.unauthorized'), code: 403);
  35. }
  36. return $this->successResponse(payload: new AuthResource($tokens));
  37. }
  38. }