Easy_solution/src/Service/AccessTokenService.php

37 lines
1022 B
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)
{
$this->entityManager = $entityManager;
}
public function revokeTokens(String $userIdentifier): void {
$accessTokens = $this->entityManager->getRepository(AccessToken::class)->findBy(['userIdentifier' => $userIdentifier, 'revoked' => false]);
foreach($accessTokens as $accessToken) {
$accessToken->revoke();
$this->entityManager->persist($accessToken);
$this->entityManager->flush();
}
}
public function getUserFromToken(string $token)
{
$data = json_decode(base64_decode(strtr($token, '-_', '+/')), true);
if (isset($data['user_identifier'])) {
return $data['user_identifier'];
}
return null;
}
}