From 2ebf26e4447c6c5eef41be35ee4487c78ffe8231 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 15 Mar 2018 14:43:59 +0100 Subject: [PATCH] admin_audit and dav listen to announce and revoke signals also place them in doc Signed-off-by: Arthur Schiwon --- .../lib/Actions/UserManagement.php | 26 +++++++++++++++++++ apps/admin_audit/lib/AppInfo/Application.php | 2 ++ apps/dav/lib/HookManager.php | 18 +++++++++++++ lib/private/User/Manager.php | 3 +++ lib/private/User/Session.php | 3 +++ lib/public/IUserManager.php | 3 +++ 6 files changed, 55 insertions(+) diff --git a/apps/admin_audit/lib/Actions/UserManagement.php b/apps/admin_audit/lib/Actions/UserManagement.php index 45250d4e70..9e01516077 100644 --- a/apps/admin_audit/lib/Actions/UserManagement.php +++ b/apps/admin_audit/lib/Actions/UserManagement.php @@ -50,6 +50,19 @@ class UserManagement extends Action { ); } + /** + * Log assignments of users (typically user backends) + * + * @param string $uid + */ + public function announce(string $uid) { + $this->log( + 'UserID assgined: "%s"', + [ 'uid' => $uid ], + [ 'uid' ] + ); + } + /** * Log deletion of users * @@ -65,6 +78,19 @@ class UserManagement extends Action { ); } + /** + * Log unassignments of users (typically user backends, no data removed) + * + * @param string $uid + */ + public function revoke(string $uid) { + $this->log( + 'UserID unassigned: "%s"', + [ 'uid' => $uid ], + [ 'uid' ] + ); + } + /** * Log enabling of users * diff --git a/apps/admin_audit/lib/AppInfo/Application.php b/apps/admin_audit/lib/AppInfo/Application.php index 5634a4a67b..4f134ab308 100644 --- a/apps/admin_audit/lib/AppInfo/Application.php +++ b/apps/admin_audit/lib/AppInfo/Application.php @@ -93,6 +93,8 @@ class Application extends App { /** @var IUserSession|Session $userSession */ $userSession = $this->getContainer()->getServer()->getUserSession(); $userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']); + $userSession->listen('\OC\User', 'announceUser', [$userActions, 'announce']); + $userSession->listen('\OC\User', 'postRevokeUser', [$userActions, 'revoke']); } protected function groupHooks(ILogger $logger) { diff --git a/apps/dav/lib/HookManager.php b/apps/dav/lib/HookManager.php index 57b176213e..a887c6c438 100644 --- a/apps/dav/lib/HookManager.php +++ b/apps/dav/lib/HookManager.php @@ -77,14 +77,22 @@ class HookManager { 'post_createUser', $this, 'postCreateUser'); + \OC::$server->getUserManager()->listen('\OC\User', 'announceUser', function ($uid) { + $this->postCreateUser(['uid' => $uid]); + }); Util::connectHook('OC_User', 'pre_deleteUser', $this, 'preDeleteUser'); + \OC::$server->getUserManager()->listen('\OC\User', 'preRevokeUser', [$this, 'preRevokeUser']); Util::connectHook('OC_User', 'post_deleteUser', $this, 'postDeleteUser'); + \OC::$server->getUserManager()->listen('\OC\User', 'postRevokeUser', function ($uid) { + $this->postDeleteUser(['uid' => $uid]); + }); + \OC::$server->getUserManager()->listen('\OC\User', 'postRevokeUser', [$this, 'postRevokeUser']); Util::connectHook('OC_User', 'changeUser', $this, @@ -103,6 +111,10 @@ class HookManager { $this->addressBooksToDelete = $this->cardDav->getUsersOwnAddressBooks('principals/users/' . $uid); } + public function preRevokeUser($uid) { + $this->usersToDelete[$uid] = $this->userManager->get($uid); + } + public function postDeleteUser($params) { $uid = $params['uid']; if (isset($this->usersToDelete[$uid])){ @@ -119,6 +131,12 @@ class HookManager { } } + public function postRevokeUser($uid) { + if (isset($this->usersToDelete[$uid])){ + $this->syncService->deleteUser($this->usersToDelete[$uid]); + } + } + public function changeUser($params) { $user = $params['user']; $this->syncService->updateUser($user); diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index abc7a45e6b..85fe42c774 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -50,6 +50,9 @@ use OCP\UserInterface; * - preCreateUser(string $uid, string $password) * - postCreateUser(\OC\User\User $user, string $password) * - change(\OC\User\User $user) + * - announceUser(string $uid) + * - preRevokeUser(string $uid) + * - postRevokeUser(string $uid) * * @package OC\User */ diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index 4ac8888cee..4114925581 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -72,6 +72,9 @@ use Symfony\Component\EventDispatcher\GenericEvent; * - postDelete(\OC\User\User $user) * - preCreateUser(string $uid, string $password) * - postCreateUser(\OC\User\User $user) + * - announceUser(string $uid) + * - preRevokeUser(string $uid) + * - postRevokeUser(string $uid) * - preLogin(string $user, string $password) * - postLogin(\OC\User\User $user, string $password) * - preRememberedLogin(string $uid) diff --git a/lib/public/IUserManager.php b/lib/public/IUserManager.php index 163e8b5e73..c8f59a95cc 100644 --- a/lib/public/IUserManager.php +++ b/lib/public/IUserManager.php @@ -40,6 +40,9 @@ namespace OCP; * - postDelete(\OC\User\User $user) * - preCreateUser(string $uid, string $password) * - postCreateUser(\OC\User\User $user, string $password) + * - announceUser(string $uid) + * - preRevokeUser(string $uid) + * - postRevokeUser(string $uid) * * @package OC\User * @since 8.0.0