Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c248e08e authored by Akhil's avatar Akhil 🙂
Browse files

Merge branch 'dev/fix_logging_cause_crash_on_password_update' into 'main'

fix logging cause crash on password update

See merge request !137
parents 0e657e0f 967796cb
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +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);
		$context->registerEventListener(PasswordUpdatedEvent::class, PasswordUpdatedListener::class);
	}

	public function boot(IBootContext $context): void {
+14 −3
Original line number Diff line number Diff line
@@ -5,21 +5,28 @@ declare(strict_types=1);
namespace OCA\EcloudAccounts\Listeners;

use Exception;
use OCA\EcloudAccounts\AppInfo\Application;
use OCA\EcloudAccounts\Service\SSOService;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\ILogger;
use OCP\ISession;
use OCP\IUserSession;
use OCP\User\Events\PasswordUpdatedEvent;

class PasswordUpdatedListener implements IEventListener {
	
	private SSOService $ssoService;

	private $logger;
	private ILogger $logger;
	private ISession $session;
	private IUserSession $userSession;

	public function __construct(SSOService $ssoService, ILogger $logger) {
	public function __construct(SSOService $ssoService, ILogger $logger, ISession $session, IUserSession $userSession) {
		$this->ssoService = $ssoService;
		$this->logger = $logger;
		$this->session = $session;
		$this->userSession = $userSession;
	}

	public function handle(Event $event): void {
@@ -27,13 +34,17 @@ class PasswordUpdatedListener implements IEventListener {
			return;
		}

		if (!$this->userSession->isLoggedIn() || !$this->session->exists('is_oidc')) {
			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]);
			$this->logger->logException($e, ['app' => Application::APP_ID]);
		}
	}
}