From 7f5ea195d66d8b3a6e6171f3f48cdc7c0fc6d6c1 Mon Sep 17 00:00:00 2001 From: Mauro Mugnaini Date: Wed, 24 Jun 2020 18:51:19 +0200 Subject: [PATCH] Now gcube's user, group and role managers are used to get related names and context is URL encoded as per Keycloak's needs --- .../event/publisher/lr62/PortalEvent.java | 13 +++++++++- .../lr62/model/PortalModelListenerEvent.java | 26 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gcube/portal/event/publisher/lr62/PortalEvent.java b/src/main/java/org/gcube/portal/event/publisher/lr62/PortalEvent.java index b5423b1..4c56c8c 100644 --- a/src/main/java/org/gcube/portal/event/publisher/lr62/PortalEvent.java +++ b/src/main/java/org/gcube/portal/event/publisher/lr62/PortalEvent.java @@ -5,7 +5,11 @@ import java.net.UnknownHostException; import java.util.Map; import org.gcube.event.publisher.Event; +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 com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; @@ -18,6 +22,8 @@ public class PortalEvent extends Event { protected static final Log log = LogFactoryUtil.getLog(PortalEvent.class); + protected static final UserManager USER_MANAGER = new LiferayUserManager(); + private static String rootVOName; public static final String TYPE = "portal"; @@ -67,7 +73,12 @@ public class PortalEvent extends Event { } protected static String getUserIdentifier(User user) { - return user.getScreenName(); + try { + return USER_MANAGER.getUserById(user.getUserId()).getUsername(); + } catch (UserManagementSystemException | UserRetrievalFault e) { + log.error("Cannot get username for user: " + user, e); + return null; + } } public void setGroup(String group) { diff --git a/src/main/java/org/gcube/portal/event/publisher/lr62/model/PortalModelListenerEvent.java b/src/main/java/org/gcube/portal/event/publisher/lr62/model/PortalModelListenerEvent.java index 7577ac6..85117d8 100644 --- a/src/main/java/org/gcube/portal/event/publisher/lr62/model/PortalModelListenerEvent.java +++ b/src/main/java/org/gcube/portal/event/publisher/lr62/model/PortalModelListenerEvent.java @@ -1,8 +1,17 @@ package org.gcube.portal.event.publisher.lr62.model; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Map; import org.gcube.portal.event.publisher.lr62.PortalEvent; +import org.gcube.vomanagement.usermanagement.GroupManager; +import org.gcube.vomanagement.usermanagement.RoleManager; +import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault; +import org.gcube.vomanagement.usermanagement.exception.RoleRetrievalFault; +import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException; +import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; +import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; @@ -17,6 +26,9 @@ public class PortalModelListenerEvent> extends PortalEven public static final String MODELCLASSNAME_ENTRY = "model-class-name"; + protected static final GroupManager GROUP_MANAGER = new LiferayGroupManager(); + protected static final RoleManager ROLE_MANAGER = new LiferayRoleManager(); + public PortalModelListenerEvent(String name, T baseModel) { super(name); setModelClassName(baseModel.getModelClassName()); @@ -47,7 +59,12 @@ public class PortalModelListenerEvent> extends PortalEven } protected static String getGroupIdentifier(Group group) throws PortalException, SystemException { - return group.getDescriptiveName(); + try { + return URLEncoder.encode(GROUP_MANAGER.getInfrastructureScope(group.getGroupId()), "UTF-8"); + } catch (UnsupportedEncodingException | UserManagementSystemException | GroupRetrievalFault e) { + log.error("Cannot get URL encoded infrastrucure scope for group: " + group, e); + return null; + } } public void setRole(Role role) throws PortalException, SystemException { @@ -55,7 +72,12 @@ public class PortalModelListenerEvent> extends PortalEven } protected static String getRoleIdentifier(Role role) throws PortalException, SystemException { - return role.getDescriptiveName(); + try { + return ROLE_MANAGER.getRole(role.getRoleId()).getRoleName(); + } catch (UserManagementSystemException | RoleRetrievalFault e) { + log.error("Cannot get gCube role for role: " + role, e); + return null; + } } public void setModelClassName(String group) {