Skip to content

Commit 4961aaa

Browse files
committed
Add cache to RefreshTokenRepository
1 parent 77c0e94 commit 4961aaa

File tree

1 file changed

+44
-12
lines changed

1 file changed

+44
-12
lines changed

src/Repositories/RefreshTokenRepository.php

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ public function persistNewRefreshToken(OAuth2RefreshTokenEntityInterface $refres
8181
$stmt,
8282
$this->preparePdoState($refreshTokenEntity->getState()),
8383
);
84+
85+
$this->protocolCache?->set(
86+
$refreshTokenEntity->getState(),
87+
$this->helpers->dateTime()->getSecondsToExpirationTime(
88+
$refreshTokenEntity->getExpiryDateTime()->getTimestamp(),
89+
),
90+
$this->getCacheKey((string)$refreshTokenEntity->getIdentifier()),
91+
);
8492
}
8593

8694
/**
@@ -90,22 +98,38 @@ public function persistNewRefreshToken(OAuth2RefreshTokenEntityInterface $refres
9098
*/
9199
public function findById(string $tokenId): ?RefreshTokenEntityInterface
92100
{
93-
$stmt = $this->database->read(
94-
"SELECT * FROM {$this->getTableName()} WHERE id = :id",
95-
[
96-
'id' => $tokenId,
97-
],
98-
);
99-
100-
if (empty($rows = $stmt->fetchAll())) {
101-
return null;
101+
/** @var ?array $data */
102+
$data = $this->protocolCache?->get(null, $this->getCacheKey($tokenId));
103+
104+
if (!is_array($data)) {
105+
$stmt = $this->database->read(
106+
"SELECT * FROM {$this->getTableName()} WHERE id = :id",
107+
[
108+
'id' => $tokenId,
109+
],
110+
);
111+
112+
if (empty($rows = $stmt->fetchAll())) {
113+
return null;
114+
}
115+
116+
/** @var array $data */
117+
$data = current($rows);
102118
}
103119

104-
/** @var array $data */
105-
$data = current($rows);
106120
$data['access_token'] = $this->accessTokenRepository->findById((string)$data['access_token_id']);
107121

108-
return $this->refreshTokenEntityFactory->fromState($data);
122+
$refreshTokenEntity = $this->refreshTokenEntityFactory->fromState($data);
123+
124+
$this->protocolCache?->set(
125+
$refreshTokenEntity->getState(),
126+
$this->helpers->dateTime()->getSecondsToExpirationTime(
127+
$refreshTokenEntity->getExpiryDateTime()->getTimestamp(),
128+
),
129+
$this->getCacheKey((string)$refreshTokenEntity->getIdentifier()),
130+
);
131+
132+
return $refreshTokenEntity;
109133
}
110134

111135
/**
@@ -180,6 +204,14 @@ private function update(RefreshTokenEntityInterface $refreshTokenEntity): void
180204
$stmt,
181205
$this->preparePdoState($refreshTokenEntity->getState()),
182206
);
207+
208+
$this->protocolCache?->set(
209+
$refreshTokenEntity->getState(),
210+
$this->helpers->dateTime()->getSecondsToExpirationTime(
211+
$refreshTokenEntity->getExpiryDateTime()->getTimestamp(),
212+
),
213+
$this->getCacheKey($refreshTokenEntity->getIdentifier()),
214+
);
183215
}
184216

185217
protected function preparePdoState(array $state): array

0 commit comments

Comments
 (0)