Skip to content

Commit f1da8b3

Browse files
Merge pull request #7131 from nextcloud/fix-board-acl-check
fix: acl check when delete, update board acl
2 parents 244d61c + 8229d40 commit f1da8b3

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
@@ -320,14 +320,14 @@ public function update($id, $title, $color, $archived) {
320320
return $board;
321321
}
322322

323-
private function applyPermissions($boardId, $edit, $share, $manage) {
323+
private function applyPermissions($boardId, $edit, $share, $manage, $oldAcl = null) {
324324
try {
325325
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_MANAGE);
326326
} catch (NoPermissionException $e) {
327327
$acls = $this->aclMapper->findAll($boardId);
328-
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) && $edit;
329-
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) && $share;
330-
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) && $manage;
328+
$edit = $this->permissionService->userCan($acls, Acl::PERMISSION_EDIT, $this->userId) ? $edit : $oldAcl?->getPermissionEdit() ?? false;
329+
$share = $this->permissionService->userCan($acls, Acl::PERMISSION_SHARE, $this->userId) ? $share : $oldAcl?->getPermissionShare() ?? false;
330+
$manage = $this->permissionService->userCan($acls, Acl::PERMISSION_MANAGE, $this->userId) ? $manage : $oldAcl?->getPermissionManage() ?? false;
331331
}
332332
return [$edit, $share, $manage];
333333
}
@@ -417,7 +417,7 @@ public function updateAcl($id, $edit, $share, $manage) {
417417

418418
/** @var Acl $acl */
419419
$acl = $this->aclMapper->find($id);
420-
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage);
420+
[$edit, $share, $manage] = $this->applyPermissions($acl->getBoardId(), $edit, $share, $manage, $acl);
421421
$acl->setPermissionEdit($edit);
422422
$acl->setPermissionShare($share);
423423
$acl->setPermissionManage($manage);
@@ -439,7 +439,7 @@ public function updateAcl($id, $edit, $share, $manage) {
439439
* @throws NotFoundExceptionInterface
440440
*/
441441
public function deleteAcl(int $id): ?Acl {
442-
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_SHARE);
442+
$this->permissionService->checkPermission($this->aclMapper, $id, Acl::PERMISSION_MANAGE);
443443
/** @var Acl $acl */
444444
$acl = $this->aclMapper->find($id);
445445
$this->boardMapper->mapAcl($acl);

0 commit comments

Comments
 (0)