Easy_solution/src/Service/AccessTokenService.php

50 lines
1.4 KiB
PHP

<?php
namespace App\Service;
use Doctrine\ORM\EntityManagerInterface;
use League\Bundle\OAuth2ServerBundle\Model\AccessToken;
class AccessTokenService
{
private EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager,
private readonly LoggerService $loggerService)
{
$this->entityManager = $entityManager;
}
public function revokeUserTokens(string $userIdentifier): void
{
$tokens = $this->entityManager->getRepository(AccessToken::class)->findBy([
'userIdentifier' => $userIdentifier,
'revoked' => false
]);
foreach ($tokens as $token) {
try{
$token->revoke();
$this->loggerService->logTokenRevocation(
'Access token revoked for user',
[
'user_identifier' => $userIdentifier,
'token_id' => $token->getIdentifier(),
]
);
}catch (\Exception $e){
$this->loggerService->logError(
'Error revoking access token: ' . $e->getMessage(),
[
'user_identifier' => $userIdentifier,
'token_id' => $token->getIdentifier(),
]
);
}
}
}
}