|
|
@@ -1,8 +1,10 @@ |
|
|
|
<?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> |
|
|
|
* |
|
|
|
* @license GNU AGPL version 3 or any later version |
|
|
|
* |
|
|
@@ -21,11 +23,10 @@ |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
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; |
|
|
@@ -35,17 +36,17 @@ 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; |
|
|
|
|
|
|
@@ -55,17 +56,20 @@ class AuditLogger { |
|
|
|
* @param ILogger $logger |
|
|
|
* @param IUserSession $userSession |
|
|
|
* @param IGroupManager $groupManager |
|
|
|
* @param EventDispatcherInterface $eventDispatcher |
|
|
|
*/ |
|
|
|
public function __construct(ILogger $logger, |
|
|
|
IUserSession $userSession, |
|
|
|
IGroupManager $groupManager) { |
|
|
|
IGroupManager $groupManager, |
|
|
|
EventDispatcherInterface $eventDispatcher) { |
|
|
|
$this->logger = $logger; |
|
|
|
$this->userSession = $userSession; |
|
|
|
$this->groupManager = $groupManager; |
|
|
|
$this->eventDispatcher = $eventDispatcher; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* register hooks in order to log them |
|
|
|
* Register hooks in order to log them |
|
|
|
*/ |
|
|
|
public function registerHooks() { |
|
|
|
$this->userManagementHooks(); |
|
|
@@ -78,7 +82,7 @@ class AuditLogger { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* connect to user management hooks |
|
|
|
* Connect to user management hooks |
|
|
|
*/ |
|
|
|
private function userManagementHooks() { |
|
|
|
$userActions = new UserManagement($this->logger); |
|
|
@@ -119,12 +123,25 @@ class AuditLogger { |
|
|
|
Util::connectHook('OC_User', 'logout', $authActions, 'logout'); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* connect to file hooks |
|
|
|
* 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, |
|
|
@@ -177,7 +194,7 @@ class AuditLogger { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* connect to trash bin hooks |
|
|
|
* Connect to trash bin hooks |
|
|
|
*/ |
|
|
|
private function trashbinHooks() { |
|
|
|
$trashActions = new Trashbin($this->logger); |