64 lines
1.5 KiB
PHP
64 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Actions\Auth\LoginAction;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Resources\UserResource;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
/**
|
|
* @group Authentication
|
|
*
|
|
* APIs for managing authentication
|
|
*/
|
|
class AuthController extends Controller
|
|
{
|
|
/**
|
|
* Login
|
|
*
|
|
* Authenticate a user and return a Sanctum token.
|
|
*
|
|
* @unauthenticated
|
|
*/
|
|
public function login(Request $request, LoginAction $action): JsonResponse
|
|
{
|
|
$credentials = $request->validate([
|
|
'email' => 'required|email',
|
|
'password' => 'required',
|
|
]);
|
|
|
|
$result = $action->execute($credentials);
|
|
|
|
return response()->json([
|
|
'data' => new UserResource($result['user']),
|
|
'token' => $result['token'],
|
|
'roles' => $result['roles'],
|
|
'permissions' => $result['permissions'],
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Get Current User
|
|
*
|
|
* Return the currently authenticated user's details.
|
|
*/
|
|
public function me(Request $request): UserResource
|
|
{
|
|
return new UserResource($request->user());
|
|
}
|
|
|
|
/**
|
|
* Logout
|
|
*
|
|
* Revoke the current user's token.
|
|
*/
|
|
public function logout(Request $request): JsonResponse
|
|
{
|
|
$request->user()->currentAccessToken()->delete();
|
|
|
|
return response()->json(['message' => 'Logged out successfully']);
|
|
}
|
|
}
|