Files
My-KOPKB/be/Modules/Auth/Services/AuthSessionService.php
T
ismailmasseran d06c4701a4
Build Docker Image / build-backend (push) Successful in 1m56s
Build Docker Image / build-frontend (push) Successful in 1m55s
Dev/v1.2 (#4)
Co-authored-by: ISMAIL MASSERAN <topaz@Mac.dlinkrouter.local>
Reviewed-on: #4
2026-07-06 12:50:55 +08:00

52 lines
1.5 KiB
PHP

<?php
namespace Modules\Auth\Services;
use App\Services\ActiveRoleService;
use App\Support\AuthCookie;
use Illuminate\Http\JsonResponse;
use Modules\Auth\Entities\User;
use Modules\Auth\Transformers\UserResource;
class AuthSessionService
{
public function createAuthResponse(User $user, string $message, int $status = 200): JsonResponse
{
$user->ensurePublicProfileToken();
if (config('app.env') !== 'local') {
$user->tokens()->delete();
}
$token = $user->createToken(
name: 'authToken',
abilities: ['*'],
expiresAt: now()->addMinutes((int) config('auth_cookie.lifetime_minutes', 720))
);
$user->load(['roles.permissions']);
ActiveRoleService::assignDefaultToToken($user, $token->accessToken);
$payload = [
'success' => true,
'message' => $message,
'data' => [
'user' => new UserResource($user),
'token' => $token->plainTextToken,
'token_type' => 'Bearer',
'expires_at' => $token->accessToken->expires_at,
],
...ActiveRoleService::sessionMeta($user),
];
if (AuthCookie::shouldExposeTokenInResponse()) {
$payload['data']['token'] = $token->plainTextToken;
}
$response = response()->json($payload, $status);
return AuthCookie::attachAuthToken($response, $token->plainTextToken);
}
}