5858use OCP \AppFramework \Bootstrap \IRegistrationContext ;
5959use OCP \Authentication \TwoFactorAuth \IProvider ;
6060use OCP \Console \ConsoleEvent ;
61+ use OCP \Group \Events \GroupCreatedEvent ;
62+ use OCP \Group \Events \GroupDeletedEvent ;
63+ use OCP \Group \Events \UserAddedEvent ;
64+ use OCP \Group \Events \UserRemovedEvent ;
6165use OCP \IConfig ;
6266use OCP \IGroupManager ;
6367use OCP \IPreview ;
6670use OCP \Log \Audit \CriticalActionPerformedEvent ;
6771use OCP \Log \ILogFactory ;
6872use OCP \Share ;
73+ use OCP \User \Events \BeforeUserLoggedInEvent ;
74+ use OCP \User \Events \UserIdAssignedEvent ;
75+ use OCP \User \Events \PasswordUpdatedEvent ;
76+ use OCP \User \Events \UserChangedEvent ;
77+ use OCP \User \Events \UserCreatedEvent ;
78+ use OCP \User \Events \UserDeletedEvent ;
79+ use OCP \User \Events \UserIdUnAssignedEvent ;
80+ use OCP \User \Events \UserLoggedInEvent ;
81+ use OCP \User \Events \UserLoggedOutEvent ;
6982use OCP \Util ;
7083use Psr \Container \ContainerInterface ;
7184use Psr \Log \LoggerInterface ;
@@ -87,6 +100,26 @@ public function register(IRegistrationContext $context): void {
87100 });
88101
89102 $ context ->registerEventListener (CriticalActionPerformedEvent::class, CriticalActionPerformedEventListener::class);
103+
104+ // User management
105+ $ context ->registerEventListener (UserCreatedEvent::class, UserManagement::class);
106+ $ context ->registerEventListener (UserDeletedEvent::class, UserManagement::class);
107+ $ context ->registerEventListener (UserChangedEvent::class, UserManagement::class);
108+ $ context ->registerEventListener (PasswordUpdatedEvent::class, UserManagement::class);
109+ $ context ->registerEventListener (UserIdAssignedEvent::class, UserManagement::class);
110+ $ context ->registerEventListener (UserIdUnAssignedEvent::class, UserManagement::class);
111+
112+ // Group management
113+ $ context ->registerEventListener (GroupCreatedEvent::class, GroupManagement::class);
114+ $ context ->registerEventListener (GroupDeletedEvent::class, GroupManagement::class);
115+ $ context ->registerEventListener (UserAddedEvent::class, GroupManagement::class);
116+ $ context ->registerEventListener (UserRemovedEvent::class, GroupManagement::class);
117+
118+ // Authentication management
119+ $ context ->registerEventListener (UserLoggedInEvent::class, Auth::class);
120+ $ context ->registerEventListener (BeforeUserLoggedInEvent::class, Auth::class);
121+ $ context ->registerEventListener (UserLoggedOutEvent::class, Auth::class);
122+
90123 }
91124
92125 public function boot (IBootContext $ context ): void {
@@ -105,10 +138,6 @@ public function boot(IBootContext $context): void {
105138 */
106139 private function registerHooks (IAuditLogger $ logger ,
107140 IServerContainer $ serverContainer ): void {
108- $ this ->userManagementHooks ($ logger , $ serverContainer ->get (IUserSession::class));
109- $ this ->groupHooks ($ logger , $ serverContainer ->get (IGroupManager::class));
110- $ this ->authHooks ($ logger );
111-
112141 /** @var EventDispatcherInterface $eventDispatcher */
113142 $ eventDispatcher = $ serverContainer ->get (EventDispatcherInterface::class);
114143 $ this ->consoleHooks ($ logger , $ eventDispatcher );
@@ -123,31 +152,6 @@ private function registerHooks(IAuditLogger $logger,
123152 $ this ->securityHooks ($ logger , $ eventDispatcher );
124153 }
125154
126- private function userManagementHooks (IAuditLogger $ logger ,
127- IUserSession $ userSession ): void {
128- $ userActions = new UserManagement ($ logger );
129-
130- Util::connectHook ('OC_User ' , 'post_createUser ' , $ userActions , 'create ' );
131- Util::connectHook ('OC_User ' , 'post_deleteUser ' , $ userActions , 'delete ' );
132- Util::connectHook ('OC_User ' , 'changeUser ' , $ userActions , 'change ' );
133-
134- assert ($ userSession instanceof UserSession);
135- $ userSession ->listen ('\OC\User ' , 'postSetPassword ' , [$ userActions , 'setPassword ' ]);
136- $ userSession ->listen ('\OC\User ' , 'assignedUserId ' , [$ userActions , 'assign ' ]);
137- $ userSession ->listen ('\OC\User ' , 'postUnassignedUserId ' , [$ userActions , 'unassign ' ]);
138- }
139-
140- private function groupHooks (IAuditLogger $ logger ,
141- IGroupManager $ groupManager ): void {
142- $ groupActions = new GroupManagement ($ logger );
143-
144- assert ($ groupManager instanceof GroupManager);
145- $ groupManager ->listen ('\OC\Group ' , 'postRemoveUser ' , [$ groupActions , 'removeUser ' ]);
146- $ groupManager ->listen ('\OC\Group ' , 'postAddUser ' , [$ groupActions , 'addUser ' ]);
147- $ groupManager ->listen ('\OC\Group ' , 'postDelete ' , [$ groupActions , 'deleteGroup ' ]);
148- $ groupManager ->listen ('\OC\Group ' , 'postCreate ' , [$ groupActions , 'createGroup ' ]);
149- }
150-
151155 private function sharingHooks (IAuditLogger $ logger ): void {
152156 $ shareActions = new Sharing ($ logger );
153157
@@ -160,14 +164,6 @@ private function sharingHooks(IAuditLogger $logger): void {
160164 Util::connectHook (Share::class, 'share_link_access ' , $ shareActions , 'shareAccessed ' );
161165 }
162166
163- private function authHooks (IAuditLogger $ logger ): void {
164- $ authActions = new Auth ($ logger );
165-
166- Util::connectHook ('OC_User ' , 'pre_login ' , $ authActions , 'loginAttempt ' );
167- Util::connectHook ('OC_User ' , 'post_login ' , $ authActions , 'loginSuccessful ' );
168- Util::connectHook ('OC_User ' , 'logout ' , $ authActions , 'logout ' );
169- }
170-
171167 private function appHooks (IAuditLogger $ logger ,
172168 EventDispatcherInterface $ eventDispatcher ): void {
173169 $ eventDispatcher ->addListener (ManagerEvent::EVENT_APP_ENABLE , function (ManagerEvent $ event ) use ($ logger ) {
0 commit comments