diff --git a/src/main/java/org/gcube/common/portal/PortalContext.java b/src/main/java/org/gcube/common/portal/PortalContext.java index 5106499..6ce7aff 100644 --- a/src/main/java/org/gcube/common/portal/PortalContext.java +++ b/src/main/java/org/gcube/common/portal/PortalContext.java @@ -251,7 +251,7 @@ public class PortalContext { /** - * + * @deprecated use only with AJAX Calls * @param httpServletRequest the httpServletRequest object * @return the instance of the user * @see GCubeUser @@ -289,6 +289,39 @@ public class PortalContext { } return userToken; } + /** + * @param httpServletRequest the httpServletRequest object + * @param scope the infrastructure scope + * @return the instance of the user + * @see GCubeUser + */ + public String getCurrentUserToken(String scope, HttpServletRequest httpServletRequest) { + String userToken = null; + if (isWithinPortal()) { + String username = getCurrentUser(httpServletRequest).getUsername(); + try { + 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; + } + } else { + String toReturn = readTokenPropertyFile(); + _log.debug("getCurrentToken devMode into IDE detected, returning scope: " + toReturn.toString()); + _log.debug("The PortalBeanLocatorUtil stacktrace (java.lang.Exception) is acceptable in dev"); + return toReturn; + } + return userToken; + } /** *