Skip to content

Commit 5efb894

Browse files
luka-nextcloudbackportbot[bot]
authored andcommitted
fix: acl check when delete, update board acl
Signed-off-by: Luka Trovic <luka@nextcloud.com>
1 parent 298e46f commit 5efb894

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

lib/Service/BoardService.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -368,14 +368,14 @@ public function update($id, $title, $color, $archived) {
368368
return $board;
369369
}
370370

371-
private function applyPermissions($boardId, $edit, $share, $manage) {
371+
private function applyPermissions($boardId, $edit, $share, $manage, $oldAcl = null) {
372372
try {
373373
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_MANAGE);
374374
} catch (NoPermissionException $e) {
375375
$acls = $this->aclMapper->findAll($boardId);
376-
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) && $edit;
377-
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) && $share;
378-
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) && $manage;
376+
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) ? $edit : $oldAcl?->getPermissionEdit() ?? false;
377+
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) ? $share : $oldAcl?->getPermissionShare() ?? false;
378+
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) ? $manage : $oldAcl?->getPermissionManage() ?? false;
379379
}
380380
return [$edit, $share, $manage];
381381
}
@@ -465,7 +465,7 @@ public function updateAcl($id, $edit, $share, $manage) {
465465

466466
/** @var Acl $acl */
467467
$acl = $this->aclMapper->find($id);
468-
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage);
468+
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage, $acl);
469469
$acl->setPermissionEdit($edit);
470470
$acl->setPermissionShare($share);
471471
$acl->setPermissionManage($manage);
@@ -487,7 +487,7 @@ public function updateAcl($id, $edit, $share, $manage) {
487487
* @throws NotFoundExceptionInterface
488488
*/
489489
public function deleteAcl(int $id): ?Acl {
490-
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE);
490+
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_MANAGE);
491491
/** @var Acl $acl */
492492
$acl = $this->aclMapper->find($id);
493493
$this->boardMapper->mapAcl($acl);

0 commit comments

Comments
 (0)