fix: Pass user id along to properly check permissions in background jobs

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2023-02-27 11:25:45 +01:00
parent 5801565486
commit aeb691752c

View File

@@ -103,21 +103,23 @@ class PermissionService {
$userId = $this->userId; $userId = $this->userId;
} }
if ($cached = $this->permissionCache->get($boardId)) { $cacheKey = $boardId . '-' . $userId;
if ($cached = $this->permissionCache->get($cacheKey)) {
return $cached; return $cached;
} }
$board = $this->getBoard($boardId); $board = $this->getBoard($boardId);
$owner = $this->userIsBoardOwner($boardId, $userId); $owner = $this->userIsBoardOwner($boardId, $userId);
$acls = $board->getDeletedAt() === 0 ? $this->aclMapper->findAll($boardId) : []; $acls = $board->getDeletedAt() === 0 ? $this->aclMapper->findAll($boardId) : [];
$permissions = [ $permissions = [
Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ), Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ, $userId),
Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT), Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT, $userId),
Acl::PERMISSION_MANAGE => $owner || $this->userCan($acls, Acl::PERMISSION_MANAGE), Acl::PERMISSION_MANAGE => $owner || $this->userCan($acls, Acl::PERMISSION_MANAGE, $userId),
Acl::PERMISSION_SHARE => ($owner || $this->userCan($acls, Acl::PERMISSION_SHARE)) Acl::PERMISSION_SHARE => ($owner || $this->userCan($acls, Acl::PERMISSION_SHARE, $userId))
&& (!$this->shareManager->sharingDisabledForUser($this->userId)) && (!$this->shareManager->sharingDisabledForUser($userId))
]; ];
$this->permissionCache->set((string)$boardId, $permissions); $this->permissionCache->set($cacheKey, $permissions);
return $permissions; return $permissions;
} }