Browse Source

fix(encryption): Do not register user key related event listeners

when master key is enabled.
Also added a safeguard in PassphraseService.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/53514/head
Côme Chilliet 5 months ago
parent
commit
f6365e76a1
No known key found for this signature in database GPG Key ID: A3E2F658B28C760A
  1. 26
      apps/encryption/lib/AppInfo/Application.php
  2. 5
      apps/encryption/lib/Services/PassphraseService.php

26
apps/encryption/lib/AppInfo/Application.php

@ -72,7 +72,12 @@ class Application extends App implements IBootstrap {
}
}
public function registerEventListeners(IConfig $config, IEventDispatcher $eventDispatcher, IManager $encryptionManager): void {
public function registerEventListeners(
IConfig $config,
IEventDispatcher $eventDispatcher,
IManager $encryptionManager,
Util $util,
): void {
if (!$encryptionManager->isEnabled()) {
return;
}
@ -84,18 +89,23 @@ class Application extends App implements IBootstrap {
}
// No maintenance so register all events
$eventDispatcher->addServiceListener(UserCreatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(UserDeletedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(BeforePasswordUpdatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(PasswordUpdatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(BeforePasswordResetEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(PasswordResetEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(UserLoggedInEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(UserLoggedInWithCookieEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(UserLoggedOutEvent::class, UserEventsListener::class);
if (!$util->isMasterKeyEnabled()) {
// Only make sense if no master key is used
$eventDispatcher->addServiceListener(UserCreatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(UserDeletedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(BeforePasswordUpdatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(PasswordUpdatedEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(BeforePasswordResetEvent::class, UserEventsListener::class);
$eventDispatcher->addServiceListener(PasswordResetEvent::class, UserEventsListener::class);
}
}
public function registerEncryptionModule(IManager $encryptionManager) {
public function registerEncryptionModule(
IManager $encryptionManager,
) {
$container = $this->getContainer();
$encryptionManager->registerEncryptionModule(

5
apps/encryption/lib/Services/PassphraseService.php

@ -55,6 +55,11 @@ class PassphraseService {
return true;
}
if ($this->util->isMasterKeyEnabled()) {
$this->logger->error('setPassphraseForUser should never be called when master key is enabled');
return true;
}
// Check user exists on backend
$user = $this->userManager->get($userId);
if ($user === null) {

Loading…
Cancel
Save