diff --git a/lib/Event/TokenRefreshedEvent.php b/lib/Event/TokenRefreshedEvent.php new file mode 100644 index 00000000..e104cd86 --- /dev/null +++ b/lib/Event/TokenRefreshedEvent.php @@ -0,0 +1,46 @@ +oldToken; + } + + public function getNewToken(): array { + return $this->newToken; + } + + public function getProvider(): Provider { + return $this->provider; + } + + public function getDiscovery(): array { + return $this->discovery; + } +} diff --git a/lib/Service/TokenService.php b/lib/Service/TokenService.php index 9da79c6f..a57c93b5 100644 --- a/lib/Service/TokenService.php +++ b/lib/Service/TokenService.php @@ -13,6 +13,7 @@ use OC\Authentication\Token\IProvider; use OCA\UserOIDC\AppInfo\Application; use OCA\UserOIDC\Db\ProviderMapper; +use OCA\UserOIDC\Event\TokenRefreshedEvent; use OCA\UserOIDC\Exception\TokenExchangeFailedException; use OCA\UserOIDC\Helper\HttpClientHelper; use OCA\UserOIDC\Model\Token; @@ -276,6 +277,13 @@ public function refresh(Token $token): Token { $bodyArray = json_decode(trim($body), true, 512, JSON_THROW_ON_ERROR); $this->logger->debug('[TokenService] ---- Refresh token success'); + + $this->eventDispatcher->dispatchTyped( + new TokenRefreshedEvent( + $token->jsonSerialize(), $bodyArray, $oidcProvider, $discovery + ) + ); + return $this->storeToken( array_merge($bodyArray, ['provider_id' => $token->getProviderId()]) );