Loading lib/AppInfo/Application.php +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ namespace OCA\EcloudAccounts\AppInfo; use OCA\EcloudAccounts\Listeners\BeforeTemplateRenderedListener; use OCA\EcloudAccounts\Listeners\BeforeUserDeletedListener; use OCA\EcloudAccounts\Listeners\PasswordUpdatedListener; use OCA\EcloudAccounts\Listeners\TwoFactorStateChangedListener; use OCA\EcloudAccounts\Listeners\UserChangedListener; use OCA\EcloudAccounts\Service\LDAPConnectionService; Loading @@ -39,6 +40,7 @@ use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\IUserManager; use OCP\User\Events\BeforeUserDeletedEvent; use OCP\User\Events\PasswordUpdatedEvent; use OCP\User\Events\UserChangedEvent; class Application extends App implements IBootstrap { Loading @@ -53,6 +55,7 @@ class Application extends App implements IBootstrap { $context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class); $context->registerEventListener(UserChangedEvent::class, UserChangedListener::class); $context->registerEventListener(StateChanged::class, TwoFactorStateChangedListener::class); $context->registerEventListener(PasswordUpdatedEvent::class, PasswordUpdatedListener::class); } public function boot(IBootContext $context): void { Loading lib/Listeners/PasswordUpdatedListener.php 0 → 100644 +39 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use Exception; use OCA\EcloudAccounts\Service\SSOService; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\ILogger; use OCP\User\Events\PasswordUpdatedEvent; class PasswordUpdatedListener implements IEventListener { private SSOService $ssoService; private $logger; public function __construct(SSOService $ssoService, ILogger $logger) { $this->ssoService = $ssoService; $this->logger = $logger; } public function handle(Event $event): void { if (!($event instanceof PasswordUpdatedEvent)) { return; } $user = $event->getUser(); $username = $user->getUID(); try { $this->ssoService->logout($username); } catch (Exception $e) { $this->logger->logException('Failed to logout from ssoService for user: ' . $username, ['exception' => $e]); } } } lib/Service/SSOService.php +11 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,17 @@ class SSOService { } } public function logout(string $username) : void { if(empty($this->currentUserId)) { $this->getUserId($username); } $url = $this->ssoConfig['admin_rest_api_url'] . self::USERS_ENDPOINT . '/' . $this->currentUserId . '/logout'; $this->logger->debug('logout calling SSO API with url: '. $url); $this->callSSOAPI($url, 'POST', [], 204); } private function getCredentialIds() : array { $url = $this->ssoConfig['admin_rest_api_url'] . self::CREDENTIALS_ENDPOINT; $url = str_replace('{USER_ID}', $this->currentUserId, $url); Loading Loading
lib/AppInfo/Application.php +3 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ namespace OCA\EcloudAccounts\AppInfo; use OCA\EcloudAccounts\Listeners\BeforeTemplateRenderedListener; use OCA\EcloudAccounts\Listeners\BeforeUserDeletedListener; use OCA\EcloudAccounts\Listeners\PasswordUpdatedListener; use OCA\EcloudAccounts\Listeners\TwoFactorStateChangedListener; use OCA\EcloudAccounts\Listeners\UserChangedListener; use OCA\EcloudAccounts\Service\LDAPConnectionService; Loading @@ -39,6 +40,7 @@ use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\IUserManager; use OCP\User\Events\BeforeUserDeletedEvent; use OCP\User\Events\PasswordUpdatedEvent; use OCP\User\Events\UserChangedEvent; class Application extends App implements IBootstrap { Loading @@ -53,6 +55,7 @@ class Application extends App implements IBootstrap { $context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class); $context->registerEventListener(UserChangedEvent::class, UserChangedListener::class); $context->registerEventListener(StateChanged::class, TwoFactorStateChangedListener::class); $context->registerEventListener(PasswordUpdatedEvent::class, PasswordUpdatedListener::class); } public function boot(IBootContext $context): void { Loading
lib/Listeners/PasswordUpdatedListener.php 0 → 100644 +39 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use Exception; use OCA\EcloudAccounts\Service\SSOService; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\ILogger; use OCP\User\Events\PasswordUpdatedEvent; class PasswordUpdatedListener implements IEventListener { private SSOService $ssoService; private $logger; public function __construct(SSOService $ssoService, ILogger $logger) { $this->ssoService = $ssoService; $this->logger = $logger; } public function handle(Event $event): void { if (!($event instanceof PasswordUpdatedEvent)) { return; } $user = $event->getUser(); $username = $user->getUID(); try { $this->ssoService->logout($username); } catch (Exception $e) { $this->logger->logException('Failed to logout from ssoService for user: ' . $username, ['exception' => $e]); } } }
lib/Service/SSOService.php +11 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,17 @@ class SSOService { } } public function logout(string $username) : void { if(empty($this->currentUserId)) { $this->getUserId($username); } $url = $this->ssoConfig['admin_rest_api_url'] . self::USERS_ENDPOINT . '/' . $this->currentUserId . '/logout'; $this->logger->debug('logout calling SSO API with url: '. $url); $this->callSSOAPI($url, 'POST', [], 204); } private function getCredentialIds() : array { $url = $this->ssoConfig['admin_rest_api_url'] . self::CREDENTIALS_ENDPOINT; $url = str_replace('{USER_ID}', $this->currentUserId, $url); Loading