aboutsummaryrefslogtreecommitdiffstats
path: root/apps/admin_audit/lib/AppInfo/Application.php
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2017-07-01 11:41:21 +0200
committerJoas Schilling <coding@schilljs.com>2017-07-01 11:41:21 +0200
commit669f684434b1996689162c9771742dd6088582a0 (patch)
tree789450b9881f41cf01ce0d5a41498da8ceee2c5d /apps/admin_audit/lib/AppInfo/Application.php
parent8260d4bf73b3ff50ebbf53680fcafb7f320a3977 (diff)
downloadnextcloud-server-669f684434b1996689162c9771742dd6088582a0.tar.gz
nextcloud-server-669f684434b1996689162c9771742dd6088582a0.zip
Move logic to Application class
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/admin_audit/lib/AppInfo/Application.php')
-rw-r--r--apps/admin_audit/lib/AppInfo/Application.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/apps/admin_audit/lib/AppInfo/Application.php b/apps/admin_audit/lib/AppInfo/Application.php
index 26df5e54913..ed9d64590ae 100644
--- a/apps/admin_audit/lib/AppInfo/Application.php
+++ b/apps/admin_audit/lib/AppInfo/Application.php
@@ -21,11 +21,162 @@
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\Auth;
+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\AppFramework\App;
+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->sharingHooks($logger);
+ $this->authHooks($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 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');
+ }
}