diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-07-05 16:16:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-05 16:16:00 +0200 |
commit | 6879573b2e24d59765ec0c44b93b0ce91c3b4623 (patch) | |
tree | 6fbbca7a517ed67012bb44ff99f3f02e9c37aa8d /apps | |
parent | 7d58bb7db513c2a488ce41efcd6833b9dfaa86da (diff) | |
parent | a4a99fa7b983ef115209acf64faa868a0456d26f (diff) | |
download | nextcloud-server-6879573b2e24d59765ec0c44b93b0ce91c3b4623.tar.gz nextcloud-server-6879573b2e24d59765ec0c44b93b0ce91c3b4623.zip |
Merge pull request #5580 from nextcloud/admin-audit-update
Admin audit update
Diffstat (limited to 'apps')
-rw-r--r-- | apps/admin_audit/appinfo/app.php | 14 | ||||
-rw-r--r-- | apps/admin_audit/appinfo/info.xml | 1 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Action.php (renamed from apps/admin_audit/lib/actions/action.php) | 3 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/AppManagement.php | 58 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Auth.php (renamed from apps/admin_audit/lib/actions/auth.php) | 5 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Console.php | 45 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Files.php (renamed from apps/admin_audit/lib/actions/files.php) | 5 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/GroupManagement.php (renamed from apps/admin_audit/lib/actions/groupmanagement.php) | 6 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Sharing.php (renamed from apps/admin_audit/lib/actions/sharing.php) | 7 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Trashbin.php (renamed from apps/admin_audit/lib/actions/trashbin.php) | 3 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/UserManagement.php (renamed from apps/admin_audit/lib/actions/usermanagement.php) | 7 | ||||
-rw-r--r-- | apps/admin_audit/lib/Actions/Versions.php (renamed from apps/admin_audit/lib/actions/versions.php) | 3 | ||||
-rw-r--r-- | apps/admin_audit/lib/AppInfo/Application.php | 218 | ||||
-rw-r--r-- | apps/admin_audit/lib/auditlogger.php | 209 |
14 files changed, 346 insertions, 238 deletions
diff --git a/apps/admin_audit/appinfo/app.php b/apps/admin_audit/appinfo/app.php index 59f7e3987a1..fef5b9ef02b 100644 --- a/apps/admin_audit/appinfo/app.php +++ b/apps/admin_audit/appinfo/app.php @@ -23,15 +23,5 @@ * */ -$logger = \OC::$server->getLogger(); -$userSession = \OC::$server->getUserSession(); -$groupManager = \OC::$server->getGroupManager(); -$eventDispatcher = \OC::$server->getEventDispatcher(); - -$auditLogger = new \OCA\Admin_Audit\AuditLogger( - $logger, - $userSession, - $groupManager, - $eventDispatcher -); -$auditLogger->registerHooks(); +$app = new \OCA\AdminAudit\AppInfo\Application(); +$app->register(); diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml index b29b0f0b01d..3b7a7a89570 100644 --- a/apps/admin_audit/appinfo/info.xml +++ b/apps/admin_audit/appinfo/info.xml @@ -6,6 +6,7 @@ <licence>AGPL</licence> <author>Nextcloud</author> <version>1.3.0</version> + <namespace>AdminAudit</namespace> <dependencies> <nextcloud min-version="13" max-version="13" /> </dependencies> diff --git a/apps/admin_audit/lib/actions/action.php b/apps/admin_audit/lib/Actions/Action.php index 2d036675869..d9257b53fd5 100644 --- a/apps/admin_audit/lib/actions/action.php +++ b/apps/admin_audit/lib/Actions/Action.php @@ -20,7 +20,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\Admin_Audit\Actions; + +namespace OCA\AdminAudit\Actions; use OCP\ILogger; diff --git a/apps/admin_audit/lib/Actions/AppManagement.php b/apps/admin_audit/lib/Actions/AppManagement.php new file mode 100644 index 00000000000..e12ff2f694e --- /dev/null +++ b/apps/admin_audit/lib/Actions/AppManagement.php @@ -0,0 +1,58 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\AdminAudit\Actions; + +class AppManagement extends Action { + + /** + * @param string $appName + */ + public function enableApp($appName) { + $this->log('App "%s" enabled', + ['app' => $appName], + ['app'] + ); + } + + /** + * @param string $appName + * @param string[] $groups + */ + public function enableAppForGroups($appName, array $groups) { + $this->log('App "%s" enabled for groups: %s', + ['app' => $appName, 'groups' => implode(', ', $groups)], + ['app', 'groups'] + ); + } + + /** + * @param string $appName + */ + public function disableApp($appName) { + $this->log('App "%s" disabled', + ['app' => $appName], + ['app'] + ); + } +} diff --git a/apps/admin_audit/lib/actions/auth.php b/apps/admin_audit/lib/Actions/Auth.php index 405ea5e6d22..a6a37409b96 100644 --- a/apps/admin_audit/lib/actions/auth.php +++ b/apps/admin_audit/lib/Actions/Auth.php @@ -20,12 +20,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\Admin_Audit\Actions; + +namespace OCA\AdminAudit\Actions; /** * Class Auth logs all auth related actions * - * @package OCA\Admin_Audit\Actions + * @package OCA\AdminAudit\Actions */ class Auth extends Action { public function loginAttempt(array $params) { diff --git a/apps/admin_audit/lib/Actions/Console.php b/apps/admin_audit/lib/Actions/Console.php new file mode 100644 index 00000000000..20553ef23d0 --- /dev/null +++ b/apps/admin_audit/lib/Actions/Console.php @@ -0,0 +1,45 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\AdminAudit\Actions; + + +class Console extends Action { + /** + * @param $arguments + */ + public function runCommand($arguments) { + if ($arguments[1] === '_completion') { + // Don't log autocompletion + return; + } + + // Remove `./occ` + array_shift($arguments); + + $this->log('Console command executed: %s', + ['arguments' => implode(' ', $arguments)], + ['arguments'] + ); + } +} diff --git a/apps/admin_audit/lib/actions/files.php b/apps/admin_audit/lib/Actions/Files.php index e8d178e6070..2f8626497cb 100644 --- a/apps/admin_audit/lib/actions/files.php +++ b/apps/admin_audit/lib/Actions/Files.php @@ -20,12 +20,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\Admin_Audit\Actions; + +namespace OCA\AdminAudit\Actions; /** * Class Files logs the actions to files * - * @package OCA\Admin_Audit\Actions + * @package OCA\AdminAudit\Actions */ class Files extends Action { /** diff --git a/apps/admin_audit/lib/actions/groupmanagement.php b/apps/admin_audit/lib/Actions/GroupManagement.php index 34aec7812c5..07d65ec0687 100644 --- a/apps/admin_audit/lib/actions/groupmanagement.php +++ b/apps/admin_audit/lib/Actions/GroupManagement.php @@ -23,18 +23,16 @@ * */ +namespace OCA\AdminAudit\Actions; -namespace OCA\Admin_Audit\Actions; - -use OCA\Admin_Audit\Actions\Action; use OCP\IGroup; use OCP\IUser; /** * Class GroupManagement logs all group manager related events * - * @package OCA\Admin_Audit + * @package OCA\AdminAudit\Actions */ class GroupManagement extends Action { diff --git a/apps/admin_audit/lib/actions/sharing.php b/apps/admin_audit/lib/Actions/Sharing.php index 85afeccd6fc..48e8121f8b0 100644 --- a/apps/admin_audit/lib/actions/sharing.php +++ b/apps/admin_audit/lib/Actions/Sharing.php @@ -20,13 +20,16 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\Admin_Audit\Actions; + +namespace OCA\AdminAudit\Actions; + + use OCP\Share; /** * Class Sharing logs the sharing actions * - * @package OCA\Admin_Audit\Actions + * @package OCA\AdminAudit\Actions */ class Sharing extends Action { /** diff --git a/apps/admin_audit/lib/actions/trashbin.php b/apps/admin_audit/lib/Actions/Trashbin.php index b04bd6b8f61..27830345b6c 100644 --- a/apps/admin_audit/lib/actions/trashbin.php +++ b/apps/admin_audit/lib/Actions/Trashbin.php @@ -21,8 +21,7 @@ * */ - -namespace OCA\Admin_Audit\Actions; +namespace OCA\AdminAudit\Actions; class Trashbin extends Action { diff --git a/apps/admin_audit/lib/actions/usermanagement.php b/apps/admin_audit/lib/Actions/UserManagement.php index 0ee192d9a31..6cb70fad50c 100644 --- a/apps/admin_audit/lib/actions/usermanagement.php +++ b/apps/admin_audit/lib/Actions/UserManagement.php @@ -21,13 +21,16 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OCA\Admin_Audit\Actions; + +namespace OCA\AdminAudit\Actions; + + use OCP\IUser; /** * Class UserManagement logs all user management related actions. * - * @package OCA\Admin_Audit\Actions + * @package OCA\AdminAudit\Actions */ class UserManagement extends Action { /** diff --git a/apps/admin_audit/lib/actions/versions.php b/apps/admin_audit/lib/Actions/Versions.php index 3e690e12a25..9c8a1c81326 100644 --- a/apps/admin_audit/lib/actions/versions.php +++ b/apps/admin_audit/lib/Actions/Versions.php @@ -21,8 +21,7 @@ * */ - -namespace OCA\Admin_Audit\Actions; +namespace OCA\AdminAudit\Actions; class Versions extends Action { diff --git a/apps/admin_audit/lib/AppInfo/Application.php b/apps/admin_audit/lib/AppInfo/Application.php new file mode 100644 index 00000000000..2748efc56ff --- /dev/null +++ b/apps/admin_audit/lib/AppInfo/Application.php @@ -0,0 +1,218 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\AdminAudit\AppInfo; + +use OC\Files\Filesystem; +use OC\Files\Node\File; +use OC\Group\Manager; +use OC\User\Session; +use OCA\AdminAudit\Actions\AppManagement; +use OCA\AdminAudit\Actions\Auth; +use OCA\AdminAudit\Actions\Console; +use OCA\AdminAudit\Actions\Files; +use OCA\AdminAudit\Actions\GroupManagement; +use OCA\AdminAudit\Actions\Sharing; +use OCA\AdminAudit\Actions\Trashbin; +use OCA\AdminAudit\Actions\UserManagement; +use OCA\AdminAudit\Actions\Versions; +use OCP\App\ManagerEvent; +use OCP\AppFramework\App; +use OCP\Console\ConsoleEvent; +use OCP\IGroupManager; +use OCP\ILogger; +use OCP\IPreview; +use OCP\IUserSession; +use OCP\Util; +use Symfony\Component\EventDispatcher\GenericEvent; + +class Application extends App { + + public function __construct() { + parent::__construct('admin_audit'); + } + + public function register() { + $this->registerHooks(); + } + + /** + * Register hooks in order to log them + */ + protected function registerHooks() { + $logger = $this->getContainer()->getServer()->getLogger(); + + $this->userManagementHooks($logger); + $this->groupHooks($logger); + $this->authHooks($logger); + + $this->consoleHooks($logger); + $this->appHooks($logger); + + $this->sharingHooks($logger); + + $this->fileHooks($logger); + $this->trashbinHooks($logger); + $this->versionsHooks($logger); + } + + protected function userManagementHooks(ILogger $logger) { + $userActions = new UserManagement($logger); + + Util::connectHook('OC_User', 'post_createUser', $userActions, 'create'); + Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete'); + Util::connectHook('OC_User', 'changeUser', $userActions, 'change'); + + /** @var IUserSession|Session $userSession */ + $userSession = $this->getContainer()->getServer()->getUserSession(); + $userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']); + } + + protected function groupHooks(ILogger $logger) { + $groupActions = new GroupManagement($logger); + + /** @var IGroupManager|Manager $groupManager */ + $groupManager = $this->getContainer()->getServer()->getGroupManager(); + $groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']); + $groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']); + $groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']); + $groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']); + } + + protected function sharingHooks(ILogger $logger) { + $shareActions = new Sharing($logger); + + Util::connectHook('OCP\Share', 'post_shared', $shareActions, 'shared'); + Util::connectHook('OCP\Share', 'post_unshare', $shareActions, 'unshare'); + Util::connectHook('OCP\Share', 'post_update_permissions', $shareActions, 'updatePermissions'); + Util::connectHook('OCP\Share', 'post_update_password', $shareActions, 'updatePassword'); + Util::connectHook('OCP\Share', 'post_set_expiration_date', $shareActions, 'updateExpirationDate'); + Util::connectHook('OCP\Share', 'share_link_access', $shareActions, 'shareAccessed'); + } + + protected function authHooks(ILogger $logger) { + $authActions = new Auth($logger); + + Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt'); + Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful'); + Util::connectHook('OC_User', 'logout', $authActions, 'logout'); + } + + protected function appHooks(ILogger $logger) { + + $eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function(ManagerEvent $event) use ($logger) { + $appActions = new AppManagement($logger); + $appActions->enableApp($event->getAppID()); + }); + $eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE_FOR_GROUPS, function(ManagerEvent $event) use ($logger) { + $appActions = new AppManagement($logger); + $appActions->enableAppForGroups($event->getAppID(), $event->getGroups()); + }); + $eventDispatcher->addListener(ManagerEvent::EVENT_APP_DISABLE, function(ManagerEvent $event) use ($logger) { + $appActions = new AppManagement($logger); + $appActions->disableApp($event->getAppID()); + }); + + } + + protected function consoleHooks(ILogger $logger) { + $eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $eventDispatcher->addListener(ConsoleEvent::EVENT_RUN, function(ConsoleEvent $event) use ($logger) { + $appActions = new Console($logger); + $appActions->runCommand($event->getArguments()); + }); + } + + protected function fileHooks(ILogger $logger) { + $fileActions = new Files($logger); + $eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $eventDispatcher->addListener( + IPreview::EVENT, + function(GenericEvent $event) use ($fileActions) { + /** @var File $file */ + $file = $event->getSubject(); + $fileActions->preview([ + 'path' => substr($file->getInternalPath(), 5), + 'width' => $event->getArguments()['width'], + 'height' => $event->getArguments()['height'], + 'crop' => $event->getArguments()['crop'], + 'mode' => $event->getArguments()['mode'] + ]); + } + ); + + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_post_rename, + $fileActions, + 'rename' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_post_create, + $fileActions, + 'create' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_post_copy, + $fileActions, + 'copy' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_post_write, + $fileActions, + 'write' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_post_update, + $fileActions, + 'update' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_read, + $fileActions, + 'read' + ); + Util::connectHook( + Filesystem::CLASSNAME, + Filesystem::signal_delete, + $fileActions, + 'delete' + ); + } + + protected function versionsHooks(ILogger $logger) { + $versionsActions = new Versions($logger); + Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback'); + Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete'); + } + + protected function trashbinHooks(ILogger $logger) { + $trashActions = new Trashbin($logger); + Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete'); + Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore'); + } +} diff --git a/apps/admin_audit/lib/auditlogger.php b/apps/admin_audit/lib/auditlogger.php deleted file mode 100644 index 4e1909c6475..00000000000 --- a/apps/admin_audit/lib/auditlogger.php +++ /dev/null @@ -1,209 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org> - * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> - * - * @author Bjoern Schiessle <bjoern@schiessle.org> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Roger Szabo <roger.szabo@web.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace OCA\Admin_Audit; - -use OC\Files\Filesystem; -use OC\Files\Node\File; -use OCA\Admin_Audit\Actions\Auth; -use OCA\Admin_Audit\Actions\Files; -use OCA\Admin_Audit\Actions\GroupManagement; -use OCA\Admin_Audit\Actions\Sharing; -use OCA\Admin_Audit\Actions\Trashbin; -use OCA\Admin_Audit\Actions\UserManagement; -use OCA\Admin_Audit\Actions\Versions; -use OCP\IGroupManager; -use OCP\ILogger; -use OCP\IPreview; -use OCP\IUserSession; -use OCP\Util; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\GenericEvent; - -class AuditLogger { - /** @var ILogger */ - private $logger; - /** @var IUserSession */ - private $userSession; - /** @var IGroupManager */ - private $groupManager; - - /** - * AuditLogger constructor. - * - * @param ILogger $logger - * @param IUserSession $userSession - * @param IGroupManager $groupManager - * @param EventDispatcherInterface $eventDispatcher - */ - public function __construct(ILogger $logger, - IUserSession $userSession, - IGroupManager $groupManager, - EventDispatcherInterface $eventDispatcher) { - $this->logger = $logger; - $this->userSession = $userSession; - $this->groupManager = $groupManager; - $this->eventDispatcher = $eventDispatcher; - } - - /** - * Register hooks in order to log them - */ - public function registerHooks() { - $this->userManagementHooks(); - $this->groupHooks(); - $this->sharingHooks(); - $this->authHooks(); - $this->fileHooks(); - $this->trashbinHooks(); - $this->versionsHooks(); - } - - /** - * Connect to user management hooks - */ - private function userManagementHooks() { - $userActions = new UserManagement($this->logger); - - Util::connectHook('OC_User', 'post_createUser', $userActions, 'create'); - Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete'); - Util::connectHook('OC_User', 'changeUser', $userActions, 'change'); - $this->userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']); - } - - private function groupHooks() { - $groupActions = new GroupManagement($this->logger); - $this->groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']); - $this->groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']); - $this->groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']); - $this->groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']); - } - - /** - * connect to sharing events - */ - private function sharingHooks() { - $shareActions = new Sharing($this->logger); - - Util::connectHook('OCP\Share', 'post_shared', $shareActions, 'shared'); - Util::connectHook('OCP\Share', 'post_unshare', $shareActions, 'unshare'); - Util::connectHook('OCP\Share', 'post_update_permissions', $shareActions, 'updatePermissions'); - Util::connectHook('OCP\Share', 'post_update_password', $shareActions, 'updatePassword'); - Util::connectHook('OCP\Share', 'post_set_expiration_date', $shareActions, 'updateExpirationDate'); - Util::connectHook('OCP\Share', 'share_link_access', $shareActions, 'shareAccessed'); - } - - /** - * connect to authentication event and related actions - */ - private function authHooks() { - $authActions = new Auth($this->logger); - - Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt'); - Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful'); - Util::connectHook('OC_User', 'logout', $authActions, 'logout'); - } - - /** - * Connect to file hooks - */ - private function fileHooks() { - $fileActions = new Files($this->logger); - $this->eventDispatcher->addListener( - IPreview::EVENT, - function(GenericEvent $event) use ($fileActions) { - /** @var File $file */ - $file = $event->getSubject(); - $fileActions->preview([ - 'path' => substr($file->getInternalPath(), 5), - 'width' => $event->getArguments()['width'], - 'height' => $event->getArguments()['height'], - 'crop' => $event->getArguments()['crop'], - 'mode' => $event->getArguments()['mode'] - ]); - } - ); - - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_post_rename, - $fileActions, - 'rename' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_post_create, - $fileActions, - 'create' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_post_copy, - $fileActions, - 'copy' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_post_write, - $fileActions, - 'write' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_post_update, - $fileActions, - 'update' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_read, - $fileActions, - 'read' - ); - Util::connectHook( - Filesystem::CLASSNAME, - Filesystem::signal_delete, - $fileActions, - 'delete' - ); - } - - public function versionsHooks() { - $versionsActions = new Versions($this->logger); - Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback'); - Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete'); - } - - /** - * Connect to trash bin hooks - */ - private function trashbinHooks() { - $trashActions = new Trashbin($this->logger); - Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete'); - Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore'); - } - -} |