|
|
|
@ -57,7 +57,10 @@ use OCP\AppFramework\Bootstrap\IBootContext;
|
|
|
|
|
use OCP\AppFramework\Bootstrap\IBootstrap;
|
|
|
|
|
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
|
|
|
|
use OCP\Authentication\TwoFactorAuth\IProvider;
|
|
|
|
|
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
|
|
|
|
|
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
|
|
|
|
|
use OCP\Console\ConsoleEvent;
|
|
|
|
|
use OCP\EventDispatcher\IEventDispatcher;
|
|
|
|
|
use OCP\IConfig;
|
|
|
|
|
use OCP\IGroupManager;
|
|
|
|
|
use OCP\IPreview;
|
|
|
|
@ -65,6 +68,7 @@ use OCP\IServerContainer;
|
|
|
|
|
use OCP\IUserSession;
|
|
|
|
|
use OCP\Log\Audit\CriticalActionPerformedEvent;
|
|
|
|
|
use OCP\Log\ILogFactory;
|
|
|
|
|
use OCP\Preview\BeforePreviewFetchedEvent;
|
|
|
|
|
use OCP\Share;
|
|
|
|
|
use OCP\Util;
|
|
|
|
|
use Psr\Container\ContainerInterface;
|
|
|
|
@ -109,8 +113,9 @@ class Application extends App implements IBootstrap {
|
|
|
|
|
$this->groupHooks($logger, $serverContainer->get(IGroupManager::class));
|
|
|
|
|
$this->authHooks($logger);
|
|
|
|
|
|
|
|
|
|
/** @var EventDispatcherInterface $eventDispatcher */
|
|
|
|
|
$eventDispatcher = $serverContainer->get(EventDispatcherInterface::class);
|
|
|
|
|
|
|
|
|
|
/** @var IEventDispatcher $eventDispatcher */
|
|
|
|
|
$eventDispatcher = $serverContainer->get(IEventDispatcher::class);
|
|
|
|
|
$this->consoleHooks($logger, $eventDispatcher);
|
|
|
|
|
$this->appHooks($logger, $eventDispatcher);
|
|
|
|
|
|
|
|
|
@ -169,7 +174,7 @@ class Application extends App implements IBootstrap {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function appHooks(IAuditLogger $logger,
|
|
|
|
|
EventDispatcherInterface $eventDispatcher): void {
|
|
|
|
|
IEventDispatcher $eventDispatcher): void {
|
|
|
|
|
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function (ManagerEvent $event) use ($logger) {
|
|
|
|
|
$appActions = new AppManagement($logger);
|
|
|
|
|
$appActions->enableApp($event->getAppID());
|
|
|
|
@ -185,27 +190,26 @@ class Application extends App implements IBootstrap {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function consoleHooks(IAuditLogger $logger,
|
|
|
|
|
EventDispatcherInterface $eventDispatcher): void {
|
|
|
|
|
$eventDispatcher->addListener(ConsoleEvent::EVENT_RUN, function (ConsoleEvent $event) use ($logger) {
|
|
|
|
|
IEventDispatcher $eventDispatcher): void {
|
|
|
|
|
$eventDispatcher->addListener(ConsoleEvent::class, function (ConsoleEvent $event) use ($logger) {
|
|
|
|
|
$appActions = new Console($logger);
|
|
|
|
|
$appActions->runCommand($event->getArguments());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function fileHooks(IAuditLogger $logger,
|
|
|
|
|
EventDispatcherInterface $eventDispatcher): void {
|
|
|
|
|
IEventDispatcher $eventDispatcher): void {
|
|
|
|
|
$fileActions = new Files($logger);
|
|
|
|
|
$eventDispatcher->addListener(
|
|
|
|
|
IPreview::EVENT,
|
|
|
|
|
function (GenericEvent $event) use ($fileActions) {
|
|
|
|
|
/** @var File $file */
|
|
|
|
|
$file = $event->getSubject();
|
|
|
|
|
BeforePreviewFetchedEvent::class,
|
|
|
|
|
function (BeforePreviewFetchedEvent $event) use ($fileActions) {
|
|
|
|
|
$file = $event->getNode();
|
|
|
|
|
$fileActions->preview([
|
|
|
|
|
'path' => mb_substr($file->getInternalPath(), 5),
|
|
|
|
|
'width' => $event->getArguments()['width'],
|
|
|
|
|
'height' => $event->getArguments()['height'],
|
|
|
|
|
'crop' => $event->getArguments()['crop'],
|
|
|
|
|
'mode' => $event->getArguments()['mode']
|
|
|
|
|
'width' => $event->getWidth(),
|
|
|
|
|
'height' => $event->getHeight(),
|
|
|
|
|
'crop' => $event->isCrop(),
|
|
|
|
|
'mode' => $event->getMode()
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
@ -267,14 +271,14 @@ class Application extends App implements IBootstrap {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function securityHooks(IAuditLogger $logger,
|
|
|
|
|
EventDispatcherInterface $eventDispatcher): void {
|
|
|
|
|
$eventDispatcher->addListener(IProvider::EVENT_SUCCESS, function (GenericEvent $event) use ($logger) {
|
|
|
|
|
IEventDispatcher $eventDispatcher): void {
|
|
|
|
|
$eventDispatcher->addListener(TwoFactorProviderChallengePassed::class, function (TwoFactorProviderChallengePassed $event) use ($logger) {
|
|
|
|
|
$security = new Security($logger);
|
|
|
|
|
$security->twofactorSuccess($event->getSubject(), $event->getArguments());
|
|
|
|
|
$security->twofactorSuccess($event->getUser(), $event->getProvider());
|
|
|
|
|
});
|
|
|
|
|
$eventDispatcher->addListener(IProvider::EVENT_FAILED, function (GenericEvent $event) use ($logger) {
|
|
|
|
|
$eventDispatcher->addListener(TwoFactorProviderChallengeFailed::class, function (TwoFactorProviderChallengeFailed $event) use ($logger) {
|
|
|
|
|
$security = new Security($logger);
|
|
|
|
|
$security->twofactorFailed($event->getSubject(), $event->getArguments());
|
|
|
|
|
$security->twofactorFailed($event->getUser(), $event->getProvider());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|