@@ -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