@@ 14-87 (lines=74) @@ | ||
11 | use League\OAuth2\Server\Entities\AuthCodeEntityInterface; |
|
12 | use League\OAuth2\Server\Repositories\AuthCodeRepositoryInterface; |
|
13 | ||
14 | class AuthCodeRepository implements AuthCodeRepositoryInterface |
|
15 | { |
|
16 | /** |
|
17 | * @var Registry |
|
18 | */ |
|
19 | private $registry; |
|
20 | ||
21 | /** |
|
22 | * @param Registry $registry |
|
23 | */ |
|
24 | public function __construct(Registry $registry) |
|
25 | { |
|
26 | $this->registry = $registry; |
|
27 | } |
|
28 | ||
29 | /** |
|
30 | * @return AuthCodeEntity |
|
31 | */ |
|
32 | public function getNewAuthCode() |
|
33 | { |
|
34 | return new AuthCodeEntity(); |
|
35 | } |
|
36 | ||
37 | /** |
|
38 | * @param AuthCodeEntityInterface $authCodeEntity |
|
39 | * @throws ORMInvalidArgumentException |
|
40 | * @throws OptimisticLockException |
|
41 | */ |
|
42 | public function persistNewAuthCode(AuthCodeEntityInterface $authCodeEntity) |
|
43 | { |
|
44 | if ($authCodeEntity instanceof AuthCodeEntity) { |
|
45 | $manager = $this->registry->getManager(); |
|
46 | $manager->persist($authCodeEntity); |
|
47 | $manager->flush(); |
|
48 | } |
|
49 | } |
|
50 | ||
51 | /** |
|
52 | * @param string $codeId |
|
53 | * @throws InvalidStateException |
|
54 | * @throws QueryException |
|
55 | * @throws OptimisticLockException |
|
56 | */ |
|
57 | public function revokeAuthCode($codeId) |
|
58 | { |
|
59 | $manager = $this->registry->getManager(); |
|
60 | /** @var AuthCodeEntity|null $authCodeEntity */ |
|
61 | if ($authCodeEntity = $manager->getRepository(AuthCodeEntity::class)->fetchOne($this->createQuery()->byIdentifier($codeId))) { |
|
62 | $authCodeEntity->setRevoked(true); |
|
63 | $manager->flush(); |
|
64 | } |
|
65 | } |
|
66 | ||
67 | /** |
|
68 | * @param string $codeId |
|
69 | * @return bool |
|
70 | * @throws InvalidStateException |
|
71 | * @throws QueryException |
|
72 | */ |
|
73 | public function isAuthCodeRevoked($codeId) |
|
74 | { |
|
75 | /** @var AuthCodeEntity|null $authCodeEntity */ |
|
76 | $authCodeEntity = $this->registry->getManager()->getRepository(AuthCodeEntity::class)->fetchOne($this->createQuery()->byIdentifier($codeId)); |
|
77 | return $authCodeEntity ? $authCodeEntity->isRevoked() : true; |
|
78 | } |
|
79 | ||
80 | /** |
|
81 | * @return AuthCodeQuery |
|
82 | */ |
|
83 | protected function createQuery(): AuthCodeQuery |
|
84 | { |
|
85 | return new AuthCodeQuery(); |
|
86 | } |
|
87 | } |
|
88 |
@@ 14-87 (lines=74) @@ | ||
11 | use League\OAuth2\Server\Entities\RefreshTokenEntityInterface; |
|
12 | use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface; |
|
13 | ||
14 | class RefreshTokenRepository implements RefreshTokenRepositoryInterface |
|
15 | { |
|
16 | /** |
|
17 | * @var Registry |
|
18 | */ |
|
19 | private $registry; |
|
20 | ||
21 | /** |
|
22 | * @param Registry $registry |
|
23 | */ |
|
24 | public function __construct(Registry $registry) |
|
25 | { |
|
26 | $this->registry = $registry; |
|
27 | } |
|
28 | ||
29 | /** |
|
30 | * @return RefreshTokenEntity |
|
31 | */ |
|
32 | public function getNewRefreshToken() |
|
33 | { |
|
34 | return new RefreshTokenEntity(); |
|
35 | } |
|
36 | ||
37 | /** |
|
38 | * @param RefreshTokenEntityInterface $refreshTokenEntity |
|
39 | * @throws ORMInvalidArgumentException |
|
40 | * @throws OptimisticLockException |
|
41 | */ |
|
42 | public function persistNewRefreshToken(RefreshTokenEntityInterface $refreshTokenEntity) |
|
43 | { |
|
44 | if ($refreshTokenEntity instanceof RefreshTokenEntity) { |
|
45 | $manager = $this->registry->getManager(); |
|
46 | $manager->persist($refreshTokenEntity); |
|
47 | $manager->flush(); |
|
48 | } |
|
49 | } |
|
50 | ||
51 | /** |
|
52 | * @param string $tokenId |
|
53 | * @throws InvalidStateException |
|
54 | * @throws QueryException |
|
55 | * @throws OptimisticLockException |
|
56 | */ |
|
57 | public function revokeRefreshToken($tokenId) |
|
58 | { |
|
59 | $manager = $this->registry->getManager(); |
|
60 | /** @var RefreshTokenEntity|null $refreshTokenEntity */ |
|
61 | if ($refreshTokenEntity = $manager->getRepository(RefreshTokenEntity::class)->fetchOne($this->createQuery()->byIdentifier($tokenId))) { |
|
62 | $refreshTokenEntity->setRevoked(true); |
|
63 | $manager->flush(); |
|
64 | } |
|
65 | } |
|
66 | ||
67 | /** |
|
68 | * @param string $tokenId |
|
69 | * @return bool |
|
70 | * @throws InvalidStateException |
|
71 | * @throws QueryException |
|
72 | */ |
|
73 | public function isRefreshTokenRevoked($tokenId) |
|
74 | { |
|
75 | /** @var RefreshTokenEntity $refreshTokenEntity */ |
|
76 | $refreshTokenEntity = $this->registry->getManager()->getRepository(RefreshTokenEntity::class)->fetchOne($this->createQuery()->byIdentifier($tokenId)); |
|
77 | return $refreshTokenEntity ? $refreshTokenEntity->isRevoked() : true; |
|
78 | } |
|
79 | ||
80 | /** |
|
81 | * @return RefreshTokenQuery |
|
82 | */ |
|
83 | protected function createQuery(): RefreshTokenQuery |
|
84 | { |
|
85 | return new RefreshTokenQuery(); |
|
86 | } |
|
87 | } |
|
88 |