diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 1dc966dcb..1fbb59439 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -34,23 +34,20 @@ use OCA\Deck\Db\Acl; use OCA\Deck\Db\AclMapper; use OCA\Deck\Db\AssignedUsersMapper; use OCA\Deck\Db\CardMapper; +use OCA\Deck\Middleware\DefaultBoardMiddleware; use OCA\Deck\Middleware\ExceptionMiddleware; use OCA\Deck\Notification\Notifier; -use OCA\Deck\Service\DefaultBoardService; use OCA\Deck\Service\FullTextSearchService; -use OCA\Deck\Service\PermissionService; use OCP\AppFramework\App; use OCP\Collaboration\Resources\IManager; use OCP\Collaboration\Resources\IProviderManager; use OCP\Comments\CommentsEntityEvent; use OCP\FullTextSearch\IFullTextSearchManager; use OCP\IGroup; -use OCP\ILogger; use OCP\IServerContainer; use OCP\IUser; use OCP\IUserManager; use OCP\IURLGenerator; -use OCP\IUserSession; use OCP\Util; use Symfony\Component\EventDispatcher\GenericEvent; @@ -67,9 +64,6 @@ class Application extends App { /** @var IFullTextSearchManager */ private $fullTextSearchManager; - /** @var ILogger */ - private $logger; - public function __construct(array $urlParams = array()) { parent::__construct('deck', $urlParams); @@ -77,10 +71,10 @@ class Application extends App { $server = $this->getContainer()->getServer(); $this->server = $server; - $this->logger = $server->getLogger(); $container->registerCapability(Capabilities::class); $container->registerMiddleWare(ExceptionMiddleware::class); + $container->registerMiddleWare(DefaultBoardMiddleware::class); $container->registerService('databaseType', static function() use ($server) { return $server->getConfig()->getSystemValue('dbtype', 'sqlite'); @@ -88,7 +82,6 @@ class Application extends App { $container->registerService('database4ByteSupport', static function() use ($server) { return $server->getDatabaseConnection()->supports4ByteText(); }); - } public function register(): void { @@ -98,7 +91,6 @@ class Application extends App { $this->registerCommentsEntity(); $this->registerFullTextSearch(); $this->registerCollaborationResources(); - $this->checkDefaultBoard(); } public function registerNavigationEntry(): void { @@ -254,19 +246,4 @@ class Application extends App { ); } - private function checkDefaultBoard(): void { - try { - /** @var IUserSession $userSession */ - $userSession = $this->getContainer()->query(IUserSession::class); - $userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null; - /** @var DefaultBoardService $defaultBoardService */ - $defaultBoardService = $this->getContainer()->query(DefaultBoardService::class); - $permissionService = $this->getContainer()->query(PermissionService::class); - if ($userId !== null && $defaultBoardService->checkFirstRun($userId) && $permissionService->canCreate()) { - $defaultBoardService->createDefaultBoard($this->server->getL10N(self::APP_ID)->t('Personal'), $userId, '0087C5'); - } - } catch (\Throwable $e) { - $this->logger->logException($e); - } - } } diff --git a/lib/Middleware/DefaultBoardMiddleware.php b/lib/Middleware/DefaultBoardMiddleware.php new file mode 100644 index 000000000..9d092cdf5 --- /dev/null +++ b/lib/Middleware/DefaultBoardMiddleware.php @@ -0,0 +1,63 @@ + + * + * @author Julius Härtl + * + * @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 . + * + */ + +namespace OCA\Deck\Middleware; + +use OCA\Deck\Service\DefaultBoardService; +use OCA\Deck\Service\PermissionService; +use OCP\AppFramework\Middleware; +use OCP\IL10N; +use OCP\ILogger; + +class DefaultBoardMiddleware extends Middleware { + + /** @var ILogger */ + private $logger; + /** @var IL10N */ + private $l10n; + /** @var DefaultBoardService */ + private $defaultBoardService; + /** @var PermissionService */ + private $permissionService; + /** @var string|null */ + private $userId; + + public function __construct(ILogger $logger, IL10N $l10n, DefaultBoardService $defaultBoardService, PermissionService $permissionService, $userId) { + $this->logger = $logger; + $this->l10n = $l10n; + $this->defaultBoardService = $defaultBoardService; + $this->permissionService = $permissionService; + $this->userId = $userId; + } + + public function beforeController($controller, $methodName) { + try { + if ($this->userId !== null && $this->defaultBoardService->checkFirstRun($this->userId) && $this->permissionService->canCreate()) { + $this->defaultBoardService->createDefaultBoard($this->l10n->t('Personal'), $this->userId, '0087C5'); + } + } catch (\Throwable $e) { + $this->logger->logException($e); + } + } + +}