diff --git a/distro/changelog.xml b/distro/changelog.xml index d58de27..0ab615a 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,8 @@ + + Added support for users in different Gateway [ticket: #17080] + Updated to StorageHub [ticket: #13226] diff --git a/pom.xml b/pom.xml index 01ac7fb..fc8e02c 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.widgets workspace-sharing-widget jar - 1.9.0-SNAPSHOT + 1.9.1-SNAPSHOT gCube Workspace Sharing Widget gCube Workspace Sharing Widget allows users to share gCube Workspace items 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 894a290..7cddf06 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 @@ -50,6 +50,9 @@ import org.gcube.portlets.widgets.workspacesharingwidget.shared.ReportAssignment import org.gcube.portlets.widgets.workspacesharingwidget.shared.SessionExpiredException; import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL; import org.gcube.vomanagement.usermanagement.GroupManager; +import org.gcube.vomanagement.usermanagement.UserManager; +import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException; +import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; import org.gcube.vomanagement.usermanagement.model.GCubeGroup; @@ -154,12 +157,12 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements } PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest()); - + GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder(); List listContactsModel = builder.buildGXTListContactsModelFromUserModel(info); - //listContactsModel.addAll(builder.getGXTListContactsModelFromVOs(info)); + // listContactsModel.addAll(builder.getGXTListContactsModelFromVOs(info)); logger.debug("Get all Gateway Users returning a list having size: " + listContactsModel.size()); return listContactsModel; @@ -226,14 +229,18 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements if (map != null && !map.isEmpty()) { List listShared = new ArrayList<>(); List keys = new ArrayList(map.keySet()); - List listContactsModel = getAllContacts(); + UserManager um = new LiferayUserManager(); + GCubeUser curr; for (String username : keys) { - for (InfoContactModel contact : listContactsModel) { - if (contact != null && contact.getLogin() != null - && contact.getLogin().compareTo(username) == 0) { - listShared.add(contact); - break; - } + curr = null; + try { + curr = um.getUserByUsername(username); + } catch (Throwable e) { + logger.warn("Invalid info for user " + username, e); + } + if (curr != null && curr.getFullname() != null && !curr.getFullname().isEmpty()) { + InfoContactModel userInfo = new InfoContactModel(username, username, curr.getFullname(), false); + listShared.add(userInfo); } } return listShared; @@ -705,15 +712,16 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements return addAdminstratorByWorkspace(folderItem.getId(), listContactLogins); } else { - String error = "Attention, the set administrators operation can only be done on the root shared folder. " - + "Please, select the root shared folder if you want to set the administrators."; - logger.error(error); - throw new Exception(error); - + String error = "Attention, the set administrators operation can only be done on the root shared folder. " + + "Please, select the root shared folder if you want to set the administrators."; + logger.error(error); + throw new Exception(error); + } } else { logger.error("The item requested is not a valid shared folder : [itemId=" + itemId + "]"); - throw new Exception("The item requested is not a valid shared folder. Impossible set the administrators."); + throw new Exception( + "The item requested is not a valid shared folder. Impossible set the administrators."); } } catch (Exception e) { @@ -741,7 +749,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements // logger.info("Retrieving old administator/s are/is:" + // oldAdmins.size()); - logger.info("Setting administators: "+listContactLogins); + logger.info("Setting administators: " + listContactLogins); sharedFolder.setAdmins(listContactLogins); /* @@ -1164,7 +1172,6 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements } } - private List retrieveUserACLsFromFolderContainer(FolderContainer folderContainer) throws Exception { String currentUser = getMyLogin(); logger.debug("Current User: " + currentUser); @@ -1190,7 +1197,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements String principal = acl.getPricipal(); String rootVO = PortalContext.getConfiguration().getInfrastructureName(); if (principal.startsWith(rootVO)) { - String tempScope=principal.substring(rootVO.length()); + String tempScope = principal.substring(rootVO.length()); int voIndex = tempScope.indexOf("-"); if (voIndex != -1) { tempScope = tempScope.substring(voIndex + 1); @@ -1198,7 +1205,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements if (vreIndex != -1) { tempScope = tempScope.substring(vreIndex + 1); if (tempScope.compareTo(vreName) == 0) { - logger.debug("User is member of: "+principal); + logger.debug("User is member of: " + principal); currentUserACL = acl; break; } @@ -1209,7 +1216,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements i++; } if (currentUserACL != null) { - logger.debug("Permission found: "+currentUserACL); + logger.debug("Permission found: " + currentUserACL); GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder(); wsAcls = builder.getWorkspaceACLForUser(currentUserACL); } else { @@ -1242,7 +1249,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements List listOfGroups = groupManager.listGroupsByUser(userId); List vres = new ArrayList(); for (GCubeGroup g : listOfGroups) { - if (groupManager.isVRE(g.getGroupId())){ + if (groupManager.isVRE(g.getGroupId())) { vres.add(g); } } @@ -1308,19 +1315,19 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements FolderContainer folderContainer = openResolverForItem.asFolder(); FolderItem folderItem = folderContainer.get(); if (folderItem != null) { - + PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest()); String username = info.getUsername(); - + if (folderItem.isPublicItem()) { logger.info("The folder is already public. Access granted to " + username); return new AllowAccess(itemId, true, "The folder is already public. Access granted to " + username, null); } - + logger.debug("Owner is: " + folderItem.getOwner()); logger.info("The current context user: " + username); - + if (folderItem.getOwner() != null && folderItem.getOwner().compareToIgnoreCase(username) == 0) { logger.info("Access to Folder Link " + folderItem.getName() + " granted, " + username + " is the owner of: " + itemId);