File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1515use OCA \Guests \Listener \LoadAdditionalScriptsListener ;
1616use OCA \Guests \Listener \ShareAutoAcceptListener ;
1717use OCA \Guests \Listener \TalkIntegrationListener ;
18+ use OCA \Guests \Listener \UserChangedListener ;
1819use OCA \Guests \Notifications \Notifier ;
1920use OCA \Guests \RestrictionManager ;
2021use OCA \Guests \UserBackend ;
3132use OCP \IUserManager ;
3233use OCP \Notification \IManager as INotificationManager ;
3334use OCP \Share \Events \ShareCreatedEvent ;
35+ use OCP \User \Events \UserChangedEvent ;
3436use OCP \User \Events \UserFirstTimeLoggedInEvent ;
3537
3638class Application extends App implements IBootstrap {
@@ -47,6 +49,7 @@ public function register(IRegistrationContext $context): void {
4749 $ context ->registerEventListener (ShareCreatedEvent::class, ShareAutoAcceptListener::class);
4850 $ context ->registerEventListener (BeforeTemplateRenderedEvent::class, TalkIntegrationListener::class);
4951 $ context ->registerEventListener (BeforeUserManagementRenderedEvent::class, BeforeUserManagementRenderedListener::class);
52+ $ context ->registerEventListener (UserChangedEvent::class, UserChangedListener::class);
5053 }
5154
5255 public function boot (IBootContext $ context ): void {
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+ /**
5+ * SPDX-FileCopyrightText: 2025 Robin Appelman <robin@icewind.nl>
6+ * SPDX-License-Identifier: AGPL-3.0-or-later
7+ */
8+
9+ namespace OCA \Guests \Listener ;
10+
11+ use OCA \Guests \GuestManager ;
12+ use OCP \EventDispatcher \Event ;
13+ use OCP \EventDispatcher \IEventListener ;
14+ use OCP \IUserSession ;
15+ use OCP \User \Events \UserChangedEvent ;
16+
17+ /**
18+ * Block guests from changing their email address
19+ */
20+ class UserChangedListener implements IEventListener {
21+ public function __construct (
22+ private readonly IUserSession $ userSession ,
23+ private readonly GuestManager $ guestManager ,
24+ ) {
25+ }
26+
27+ public function handle (Event $ event ): void {
28+ if (!$ event instanceof UserChangedEvent) {
29+ return ;
30+ }
31+ if ($ event ->getFeature () !== 'eMailAddress ' ) {
32+ return ;
33+ }
34+ $ user = $ event ->getUser ();
35+ if ($ this ->userSession ->getUser () !== $ user ) {
36+ return ;
37+ }
38+ if (!$ this ->guestManager ->isGuest ($ user )) {
39+ return ;
40+ }
41+ if (strtolower ($ event ->getValue ()) === strtolower ($ user ->getUID ())) {
42+ return ;
43+ }
44+ $ user ->setSystemEMailAddress (strtolower ($ user ->getUID ()));
45+ $ event ->stopPropagation ();
46+ }
47+ }
You can’t perform that action at this time.
0 commit comments