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