37 lines
1022 B
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;
|
|
}
|
|
}
|