@@ -50,6 +50,7 @@ public function getAssetPermissions(
5050 /** @var AssetPermissions $permissions */
5151 $ permissions = $ this ->getPermissions (
5252 elementPath: $ asset ->getFullPath (),
53+ parentId: $ asset ->getParentId (),
5354 permissionsType: AssetWorkspace::WORKSPACE_TYPE ,
5455 defaultPermissions: $ permissions ,
5556 user: $ user
@@ -66,6 +67,7 @@ public function getDocumentPermissions(
6667 /** @var DocumentPermissions $permissions */
6768 $ permissions = $ this ->getPermissions (
6869 elementPath: $ document ->getFullPath (),
70+ parentId: $ document ->getParentId (),
6971 permissionsType: DocumentWorkspace::WORKSPACE_TYPE ,
7072 defaultPermissions: $ permissions ,
7173 user: $ user
@@ -82,6 +84,7 @@ public function getDataObjectPermissions(
8284 /** @var DataObjectPermissions $permissions */
8385 $ permissions = $ this ->getPermissions (
8486 elementPath: $ object ->getFullPath (),
87+ parentId: $ object ->getParentId (),
8588 permissionsType: DataObjectWorkspace::WORKSPACE_TYPE ,
8689 defaultPermissions: $ permissions ,
8790 user: $ user ,
@@ -111,17 +114,18 @@ public function getPermissionValue(BasePermissions $permissions, string $permiss
111114
112115 private function getPermissions (
113116 string $ elementPath ,
117+ int $ parentId ,
114118 string $ permissionsType ,
115119 BasePermissions $ defaultPermissions ,
116120 ?User $ user
117- ): ? BasePermissions {
121+ ): BasePermissions {
118122 $ adminPermissions = $ this ->getAdminUserPermissions (
119123 $ user ,
120124 $ defaultPermissions
121125 );
122126
123127 if ($ adminPermissions ) {
124- return $ adminPermissions ;
128+ return $ this -> addRootNodePermissions ( $ elementPath , $ parentId , $ adminPermissions) ;
125129 }
126130
127131 $ userWorkspaces = $ this ->workspaceService ->getRelevantWorkspaces (
@@ -136,8 +140,9 @@ private function getPermissions(
136140 $ elementPath
137141 );
138142 }
143+ $ permissions = $ this ->getPermissionsFromWorkspaces ($ userWorkspaces , $ userRoleWorkspaces ) ?? $ defaultPermissions ;
139144
140- return $ this ->getPermissionsFromWorkspaces ( $ userWorkspaces , $ userRoleWorkspaces );
145+ return $ this ->addRootNodePermissions ( $ elementPath , $ parentId , $ permissions );
141146 }
142147
143148 private function getAdminUserPermissions (
@@ -206,4 +211,21 @@ private function addRelevantRolePermissions(
206211
207212 return $ workspacePermissions ;
208213 }
214+
215+ private function addRootNodePermissions (
216+ string $ fullPath ,
217+ int $ parentId ,
218+ BasePermissions $ permissions
219+ ): BasePermissions
220+ {
221+ if ($ fullPath === '/ ' && $ parentId === 0 ) {
222+ $ permissions ->setDelete (false );
223+ $ permissions ->setRename (false );
224+ if (method_exists ($ permissions , 'setUnpublish ' )) {
225+ $ permissions ->setUnpublish (false );
226+ }
227+ }
228+
229+ return $ permissions ;
230+ }
209231}
0 commit comments