From bfc8222e6f93fb0e6b6c8b0a861e4f35b3eb1aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 29 Dec 2021 15:57:35 +0100 Subject: [PATCH] Avoid blocking calendar access if something goes wrong while fetching deck entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/Service/CardService.php | 8 +++++++- lib/Service/StackService.php | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 5d228b73d..729570ab1 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -37,6 +37,7 @@ use OCA\Deck\Db\StackMapper; use OCA\Deck\Event\CardCreatedEvent; use OCA\Deck\Event\CardDeletedEvent; use OCA\Deck\Event\CardUpdatedEvent; +use OCA\Deck\NoPermissionException; use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\LabelMapper; @@ -154,7 +155,12 @@ class CardService { } public function findCalendarEntries($boardId) { - $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); + try { + $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); + } catch (NoPermissionException $e) { + \OC::$server->getLogger()->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]); + return []; + } $cards = $this->cardMapper->findCalendarEntries($boardId); foreach ($cards as $card) { $this->enrich($card); diff --git a/lib/Service/StackService.php b/lib/Service/StackService.php index 93de14018..ae0a72af7 100644 --- a/lib/Service/StackService.php +++ b/lib/Service/StackService.php @@ -35,6 +35,7 @@ use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\Stack; use OCA\Deck\Db\StackMapper; +use OCA\Deck\NoPermissionException; use OCA\Deck\StatusException; class StackService { @@ -142,7 +143,12 @@ class StackService { } public function findCalendarEntries($boardId) { - $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ); + try { + $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ); + } catch (NoPermissionException $e) { + \OC::$server->getLogger()->error('Unable to check permission for a previously obtained board ' . $boardId, ['exception' => $e]); + return []; + } return $this->stackMapper->findAll($boardId); }