AuthController.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. class AuthController extends Controller
  11. {
  12. public function __construct(
  13. protected AuthService $authService,
  14. ) {}
  15. public function login(AuthRequest $request): JsonResponse
  16. {
  17. $tokens = $this->authService->login(AuthDto::fromRequest($request));
  18. if (!$tokens) {
  19. return $this->errorResponse(message: __('auth.failed'), code: 401);
  20. }
  21. return $this->successResponse(payload: new AuthResource($tokens), message: __('auth.logged_in'));
  22. }
  23. public function logout(): JsonResponse
  24. {
  25. $this->authService->logout();
  26. return $this->successResponse(message: __('auth.logout'));
  27. }
  28. public function refresh(RefreshTokenRequest $request): JsonResponse
  29. {
  30. $tokens = $this->authService->refresh(RefreshTokenDto::fromRequest($request));
  31. if (is_null($tokens)) {
  32. return $this->errorResponse(message: __('auth.unauthorized'), code: 403);
  33. }
  34. return $this->successResponse(payload: new AuthResource($tokens));
  35. }
  36. }