AuthController.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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\Request;
  7. use Illuminate\Http\JsonResponse;
  8. use App\Http\Resources\AuthResource;
  9. use App\Services\AuthService;
  10. use App\DataTransferObjects\RefreshTokenDto;
  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(Request $request): JsonResponse
  26. {
  27. $user = $request->user();
  28. if (!$user) {
  29. return $this->successResponse(message: __('auth.logout'));
  30. }
  31. $user()->tokens()->delete();
  32. return $this->successResponse(message: __('auth.logout'));
  33. }
  34. public function refresh(RefreshTokenRequest $request): JsonResponse
  35. {
  36. $tokens = $this->authService->refresh(RefreshTokenDto::fromRequest($request));
  37. if (is_null($tokens)) {
  38. return $this->errorResponse(message: __('auth.unauthorized'), code: 403);
  39. }
  40. return $this->successResponse(payload: new AuthResource($tokens));
  41. }
  42. }