diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java index 3085555..0ba88d6 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java @@ -579,22 +579,31 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C // get http session HttpSession httpSession = getThreadLocalRequest().getSession(); String scope = (String)httpSession.getAttribute(SessionCatalogueAttributes.SCOPE_CLIENT_PORTLET_URL); - DataCatalogue catalogue = getCatalogue(scope); - List ckanGroups = catalogue.getGroups(); - - String apiKey = catalogue.getApiKeyFromUsername(username); - // Members/Admin of the group - for (CkanGroup ckanGroup : ckanGroups) { - String role = catalogue.getRoleOfUserInGroup(username, ckanGroup.getName(), apiKey); + // check if they are in session + String keyPerScopeGroups = UtilMethods.concatenateSessionKeyScope(SessionCatalogueAttributes.CKAN_GROUPS_MEMBER, scope); - if(role == null) - continue; + if(httpSession.getAttribute(keyPerScopeGroups) != null){ + toReturn = (List)httpSession.getAttribute(keyPerScopeGroups); + logger.info("Found user's groups in session " + toReturn); + }else{ - toReturn.add(new GroupBean(ckanGroup.getTitle(), ckanGroup.getName())); + DataCatalogue catalogue = getCatalogue(scope); + List ckanGroups = catalogue.getGroups(); + + String apiKey = catalogue.getApiKeyFromUsername(username); + + // Members/Admin of the group + for (CkanGroup ckanGroup : ckanGroups) { + String role = catalogue.getRoleOfUserInGroup(username, ckanGroup.getName(), apiKey); + if(role == null) + continue; + + toReturn.add(new GroupBean(ckanGroup.getTitle(), ckanGroup.getName())); + } + + httpSession.setAttribute(keyPerScopeGroups, toReturn); } - logger.debug("List of groups to return is " + toReturn); - }else{ logger.warn("Dev mode detected"); toReturn = Arrays.asList(new GroupBean("Group title", "aaa"));