From f18c1d47e7b62c879359db3c73f8a5add35806aa Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 17 Nov 2016 10:15:23 +0000 Subject: [PATCH] added method to generate token only if it doesnt exists git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portal/portal-manager@134275 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../gcube/common/portal/PortalContext.java | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/gcube/common/portal/PortalContext.java b/src/main/java/org/gcube/common/portal/PortalContext.java index c57e413..a46607f 100644 --- a/src/main/java/org/gcube/common/portal/PortalContext.java +++ b/src/main/java/org/gcube/common/portal/PortalContext.java @@ -11,6 +11,8 @@ import java.util.Properties; import javax.servlet.http.HttpServletRequest; +import org.gcube.common.authorization.client.exceptions.ObjectNotFound; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.provider.UserInfo; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; @@ -246,7 +248,7 @@ public class PortalContext { } return -1; } - + /** * @@ -259,9 +261,18 @@ public class PortalContext { if (groupIdNo != null) { String scope = getCurrentScope(httpServletRequest); String username = getCurrentUser(httpServletRequest).getUsername(); + String userToken = null; try { - return getAuthorizationToken(username, scope); - } catch (Exception e) { + ScopeProvider.instance.set(scope); + userToken = authorizationService().resolveTokenByUserAndContext(username, scope); + SecurityTokenProvider.instance.set(userToken); + } + catch (ObjectNotFound ex) { + userToken = generateAuthorizationToken(username, scope); + SecurityTokenProvider.instance.set(userToken); + _log.debug("generateAuthorizationToken OK for " + username + " in scope " + scope); + } + catch (Exception e) { _log.error("Error while trying to generate token for user " + username + "in scope " + scope); e.printStackTrace(); return null; @@ -278,20 +289,23 @@ public class PortalContext { } return null; } - + /** * * @param username * @param scope * @throws Exception */ - private static String getAuthorizationToken(String username, String scope) throws Exception { - ScopeProvider.instance.set(scope); - _log.debug("calling service token on scope " + scope); + private static String generateAuthorizationToken(String username, String scope) { List userRoles = new ArrayList<>(); userRoles.add(DEFAULT_ROLE); - String token = authorizationService().generateUserToken(new UserInfo(username, userRoles), scope); - _log.debug("received token: "+token); + String token; + try { + token = authorizationService().generateUserToken(new UserInfo(username, userRoles), scope); + } catch (Exception e) { + e.printStackTrace(); + return null; + } return token; } /** @@ -650,7 +664,7 @@ public class PortalContext { return null; } } - + /** * for development purposes only */ @@ -703,7 +717,7 @@ public class PortalContext { return null; } } - + /** * for development purposes only */ @@ -738,8 +752,8 @@ public class PortalContext { } return -1L; } - - + + /** * * @return $CATALINA_HOME @@ -747,7 +761,7 @@ public class PortalContext { private static String getCatalinaHome() { return (System.getenv("CATALINA_HOME").endsWith("/") ? System.getenv("CATALINA_HOME") : System.getenv("CATALINA_HOME")+"/"); } - + /** * * @return $GCUBE-DEV-HOME