Files
biiproject-kit-v2/app/Http/Controllers/Api/V1/AuthController.php
T

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']);
}
}