Skip to content

Commit f0100f6

Browse files
come-ncbackportbot[bot]
authored andcommitted
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 <[email protected]>
1 parent 1a7ff4b commit f0100f6

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

apps/encryption/lib/AppInfo/Application.php

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,12 @@ public function setUp(IManager $encryptionManager) {
7272
}
7373
}
7474

75-
public function registerEventListeners(IConfig $config, IEventDispatcher $eventDispatcher, IManager $encryptionManager): void {
75+
public function registerEventListeners(
76+
IConfig $config,
77+
IEventDispatcher $eventDispatcher,
78+
IManager $encryptionManager,
79+
Util $util,
80+
): void {
7681
if (!$encryptionManager->isEnabled()) {
7782
return;
7883
}
@@ -84,18 +89,23 @@ public function registerEventListeners(IConfig $config, IEventDispatcher $eventD
8489
}
8590

8691
// No maintenance so register all events
87-
$eventDispatcher->addServiceListener(UserCreatedEvent::class, UserEventsListener::class);
88-
$eventDispatcher->addServiceListener(UserDeletedEvent::class, UserEventsListener::class);
89-
$eventDispatcher->addServiceListener(BeforePasswordUpdatedEvent::class, UserEventsListener::class);
90-
$eventDispatcher->addServiceListener(PasswordUpdatedEvent::class, UserEventsListener::class);
91-
$eventDispatcher->addServiceListener(BeforePasswordResetEvent::class, UserEventsListener::class);
92-
$eventDispatcher->addServiceListener(PasswordResetEvent::class, UserEventsListener::class);
9392
$eventDispatcher->addServiceListener(UserLoggedInEvent::class, UserEventsListener::class);
9493
$eventDispatcher->addServiceListener(UserLoggedInWithCookieEvent::class, UserEventsListener::class);
9594
$eventDispatcher->addServiceListener(UserLoggedOutEvent::class, UserEventsListener::class);
95+
if (!$util->isMasterKeyEnabled()) {
96+
// Only make sense if no master key is used
97+
$eventDispatcher->addServiceListener(UserCreatedEvent::class, UserEventsListener::class);
98+
$eventDispatcher->addServiceListener(UserDeletedEvent::class, UserEventsListener::class);
99+
$eventDispatcher->addServiceListener(BeforePasswordUpdatedEvent::class, UserEventsListener::class);
100+
$eventDispatcher->addServiceListener(PasswordUpdatedEvent::class, UserEventsListener::class);
101+
$eventDispatcher->addServiceListener(BeforePasswordResetEvent::class, UserEventsListener::class);
102+
$eventDispatcher->addServiceListener(PasswordResetEvent::class, UserEventsListener::class);
103+
}
96104
}
97105

98-
public function registerEncryptionModule(IManager $encryptionManager) {
106+
public function registerEncryptionModule(
107+
IManager $encryptionManager,
108+
) {
99109
$container = $this->getContainer();
100110

101111
$encryptionManager->registerEncryptionModule(

apps/encryption/lib/Services/PassphraseService.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ public function setPassphraseForUser(string $userId, string $password, ?string $
5555
return true;
5656
}
5757

58+
if ($this->util->isMasterKeyEnabled()) {
59+
$this->logger->error('setPassphraseForUser should never be called when master key is enabled');
60+
return true;
61+
}
62+
5863
// Check user exists on backend
5964
$user = $this->userManager->get($userId);
6065
if ($user === null) {

0 commit comments

Comments
 (0)