diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java index d53eba1..e8d1fb3 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java @@ -1762,15 +1762,26 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements break; } - + if (selectedAccessType == null) { throw new Exception("ACLType parameter is invalid"); } List acls = folderContainer.getAcls(); + boolean isAdmin; for (ACL acl : acls) { if (acl.getPricipal().compareTo(currentUser) != 0) { - folderContainer = folderContainer.changeAcls(acl.getPricipal(), selectedAccessType); + isAdmin = false; + for (AccessType accessType : acl.getAccessTypes()) { + if (accessType.compareTo(AccessType.ADMINISTRATOR) == 0) { + isAdmin = true; + break; + } + } + + if (!isAdmin) { + folderContainer = folderContainer.changeAcls(acl.getPricipal(), selectedAccessType); + } } }