50 lines
1.4 KiB
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(),
|
|
]
|
|
);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|