@@ -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