AuthController.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\DTO\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\DTO\RefreshTokenDTO;
  10. use Illuminate\Support\Facades\Log;
  11. class AuthController extends Controller
  12. {
  13. public function __construct(
  14. protected AuthService $authService,
  15. ) {}
  16. public function login(AuthRequest $request): JsonResponse
  17. {
  18. $tokens = $this->authService->login(credentials: AuthDTO::fromRequest(request: $request));
  19. if (!$tokens) {
  20. return $this->errorResponse(message: __(key: 'auth.failed'), code: 401);
  21. }
  22. return $this->successResponse(payload: new AuthResource(resource: $tokens), message: __(key: 'auth.logged_in'));
  23. }
  24. public function logout(): JsonResponse
  25. {
  26. $this->authService->logout();
  27. return $this->successResponse(message: __(key: 'auth.logout'));
  28. }
  29. public function refresh(RefreshTokenRequest $request): JsonResponse
  30. {
  31. $tokens = $this->authService->refresh(refreshToken: RefreshTokenDTO::fromRequest(request: $request));
  32. if (is_null(value: $tokens)) {
  33. return $this->errorResponse(message: __(key: 'auth.unauthorized'), code: 403);
  34. }
  35. return $this->successResponse(payload: new AuthResource(resource: $tokens));
  36. }
  37. }