ref 17080: Workspace - list of users I shared folder with varies from a gateway to another

https://support.d4science.org/issues/17080

Fix removed due to problems with shared folder by groups in the old HL

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@181092 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2019-07-01 10:58:10 +00:00
parent 43dd4023f5
commit 651e35ec87
1 changed files with 25 additions and 22 deletions

View File

@ -154,12 +154,12 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
} }
PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest()); PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest());
GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder(); GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder();
List<InfoContactModel> listContactsModel = builder.buildGXTListContactsModelFromUserModel(info); List<InfoContactModel> 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()); logger.debug("Get all Gateway Users returning a list having size: " + listContactsModel.size());
return listContactsModel; return listContactsModel;
@ -226,11 +226,14 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
if (map != null && !map.isEmpty()) { if (map != null && !map.isEmpty()) {
List<InfoContactModel> listShared = new ArrayList<>(); List<InfoContactModel> listShared = new ArrayList<>();
List<String> keys = new ArrayList<String>(map.keySet()); List<String> keys = new ArrayList<String>(map.keySet());
List<InfoContactModel> listContactsModel = getAllContacts();
for (String username : keys) { for (String username : keys) {
if (username != null && !username.isEmpty()) { for (InfoContactModel contact : listContactsModel) {
InfoContactModel contact = new InfoContactModel(username, username, if (contact != null && contact.getLogin() != null
UserUtil.getUserFullName(username), false); && contact.getLogin().compareTo(username) == 0) {
listShared.add(contact); listShared.add(contact);
break;
}
} }
} }
return listShared; return listShared;
@ -702,16 +705,15 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
return addAdminstratorByWorkspace(folderItem.getId(), listContactLogins); return addAdminstratorByWorkspace(folderItem.getId(), listContactLogins);
} else { } else {
String error = "Attention, the set administrators operation can only be done on the root shared folder. " 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."; + "Please, select the root shared folder if you want to set the administrators.";
logger.error(error); logger.error(error);
throw new Exception(error); throw new Exception(error);
} }
} else { } else {
logger.error("The item requested is not a valid shared folder : [itemId=" + itemId + "]"); logger.error("The item requested is not a valid shared folder : [itemId=" + itemId + "]");
throw new Exception( throw new Exception("The item requested is not a valid shared folder. Impossible set the administrators.");
"The item requested is not a valid shared folder. Impossible set the administrators.");
} }
} catch (Exception e) { } catch (Exception e) {
@ -739,7 +741,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
// logger.info("Retrieving old administator/s are/is:" + // logger.info("Retrieving old administator/s are/is:" +
// oldAdmins.size()); // oldAdmins.size());
logger.info("Setting administators: " + listContactLogins); logger.info("Setting administators: "+listContactLogins);
sharedFolder.setAdmins(listContactLogins); sharedFolder.setAdmins(listContactLogins);
/* /*
@ -1162,6 +1164,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
} }
} }
private List<WorkspaceACL> retrieveUserACLsFromFolderContainer(FolderContainer folderContainer) throws Exception { private List<WorkspaceACL> retrieveUserACLsFromFolderContainer(FolderContainer folderContainer) throws Exception {
String currentUser = getMyLogin(); String currentUser = getMyLogin();
logger.debug("Current User: " + currentUser); logger.debug("Current User: " + currentUser);
@ -1187,7 +1190,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
String principal = acl.getPricipal(); String principal = acl.getPricipal();
String rootVO = PortalContext.getConfiguration().getInfrastructureName(); String rootVO = PortalContext.getConfiguration().getInfrastructureName();
if (principal.startsWith(rootVO)) { if (principal.startsWith(rootVO)) {
String tempScope = principal.substring(rootVO.length()); String tempScope=principal.substring(rootVO.length());
int voIndex = tempScope.indexOf("-"); int voIndex = tempScope.indexOf("-");
if (voIndex != -1) { if (voIndex != -1) {
tempScope = tempScope.substring(voIndex + 1); tempScope = tempScope.substring(voIndex + 1);
@ -1195,7 +1198,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
if (vreIndex != -1) { if (vreIndex != -1) {
tempScope = tempScope.substring(vreIndex + 1); tempScope = tempScope.substring(vreIndex + 1);
if (tempScope.compareTo(vreName) == 0) { if (tempScope.compareTo(vreName) == 0) {
logger.debug("User is member of: " + principal); logger.debug("User is member of: "+principal);
currentUserACL = acl; currentUserACL = acl;
break; break;
} }
@ -1206,7 +1209,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
i++; i++;
} }
if (currentUserACL != null) { if (currentUserACL != null) {
logger.debug("Permission found: " + currentUserACL); logger.debug("Permission found: "+currentUserACL);
GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder(); GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder();
wsAcls = builder.getWorkspaceACLForUser(currentUserACL); wsAcls = builder.getWorkspaceACLForUser(currentUserACL);
} else { } else {
@ -1239,7 +1242,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
List<GCubeGroup> listOfGroups = groupManager.listGroupsByUser(userId); List<GCubeGroup> listOfGroups = groupManager.listGroupsByUser(userId);
List<GCubeGroup> vres = new ArrayList<GCubeGroup>(); List<GCubeGroup> vres = new ArrayList<GCubeGroup>();
for (GCubeGroup g : listOfGroups) { for (GCubeGroup g : listOfGroups) {
if (groupManager.isVRE(g.getGroupId())) { if (groupManager.isVRE(g.getGroupId())){
vres.add(g); vres.add(g);
} }
} }
@ -1305,19 +1308,19 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
FolderContainer folderContainer = openResolverForItem.asFolder(); FolderContainer folderContainer = openResolverForItem.asFolder();
FolderItem folderItem = folderContainer.get(); FolderItem folderItem = folderContainer.get();
if (folderItem != null) { if (folderItem != null) {
PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest()); PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest());
String username = info.getUsername(); String username = info.getUsername();
if (folderItem.isPublicItem()) { if (folderItem.isPublicItem()) {
logger.info("The folder is already public. Access granted to " + username); 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, return new AllowAccess(itemId, true, "The folder is already public. Access granted to " + username,
null); null);
} }
logger.debug("Owner is: " + folderItem.getOwner()); logger.debug("Owner is: " + folderItem.getOwner());
logger.info("The current context user: " + username); logger.info("The current context user: " + username);
if (folderItem.getOwner() != null && folderItem.getOwner().compareToIgnoreCase(username) == 0) { if (folderItem.getOwner() != null && folderItem.getOwner().compareToIgnoreCase(username) == 0) {
logger.info("Access to Folder Link " + folderItem.getName() + " granted, " + username logger.info("Access to Folder Link " + folderItem.getName() + " granted, " + username
+ " is the owner of: " + itemId); + " is the owner of: " + itemId);