| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- <?php
- namespace App\Http\Controllers;
- use App\DTO\AuthDTO;
- use App\Http\Requests\AuthRequest;
- use App\Http\Requests\RefreshTokenRequest;
- use Illuminate\Http\JsonResponse;
- use App\Http\Resources\AuthResource;
- use App\Services\AuthService;
- use App\DTO\RefreshTokenDTO;
- use Illuminate\Support\Facades\Log;
- class AuthController extends Controller
- {
- public function __construct(
- protected AuthService $authService,
- ) {}
- public function login(AuthRequest $request): JsonResponse
- {
- $tokens = $this->authService->login(credentials: AuthDTO::fromRequest(request: $request));
- if (!$tokens) {
- return $this->errorResponse(message: __(key: 'auth.failed'), code: 401);
- }
- return $this->successResponse(payload: new AuthResource(resource: $tokens), message: __(key: 'auth.logged_in'));
- }
- public function logout(): JsonResponse
- {
- $this->authService->logout();
- return $this->successResponse(message: __(key: 'auth.logout'));
- }
- public function refresh(RefreshTokenRequest $request): JsonResponse
- {
- $tokens = $this->authService->refresh(refreshToken: RefreshTokenDTO::fromRequest(request: $request));
- if (is_null(value: $tokens)) {
- // It should never reach this point, but just in case
- Log::error(message: 'Unauthorized');
- return $this->errorResponse(message: __(key: 'auth.unauthorized'), code: 403);
- }
- return $this->successResponse(payload: new AuthResource(resource: $tokens));
- }
- }
|