minor fixes: added some logs in ContextUserUtil for reading the content of some cookies, added a method to retrieve a user token by scope and userid

git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portal/portal-manager@141363 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2016-12-22 13:19:22 +00:00
parent b7ac890f89
commit 40b43f6c8f
2 changed files with 39 additions and 2 deletions

View File

@ -19,7 +19,7 @@ import com.liferay.util.Encryptor;
* *
*/ */
public class ContextUserUtil { public class ContextUserUtil {
private static final Logger _log = LoggerFactory.getLogger(PortalContext.class); private static final Logger _log = LoggerFactory.getLogger(ContextUserUtil.class);
/** /**
* *
* @param httpServletRequest * @param httpServletRequest
@ -34,13 +34,17 @@ public class ContextUserUtil {
if ("COMPANY_ID".equals(c.getName())) { if ("COMPANY_ID".equals(c.getName())) {
companyId = c.getValue(); companyId = c.getValue();
} else if ("ID".equals(c.getName())) { } else if ("ID".equals(c.getName())) {
_log.info("User id before ascii conversion is " + c.getValue());
userId = hexStringToStringByAscii(c.getValue()); userId = hexStringToStringByAscii(c.getValue());
} }
} }
if (userId != null && companyId != null) { if (userId != null && companyId != null) {
try { try {
Company company = CompanyLocalServiceUtil.getCompany(Long.parseLong(companyId)); Company company = CompanyLocalServiceUtil.getCompany(Long.parseLong(companyId));
_log.info("company is " + company);
Key key = company.getKeyObj(); Key key = company.getKeyObj();
_log.info("key is " + company.getKey());
_log.info("User id after ascii conversion is " + userId);
String userIdPlain = Encryptor.decrypt(key, userId); String userIdPlain = Encryptor.decrypt(key, userId);
return Long.valueOf(userIdPlain); return Long.valueOf(userIdPlain);

View File

@ -322,7 +322,40 @@ public class PortalContext {
} }
return userToken; return userToken;
} }
/**
* Another way to retrieve the user token
* @param scope the current scope
* @param userId the Liferay's user id
* @return the Token for the user in scope
*/
public String getCurrentUserToken(String scope, long userId) {
String userToken = null;
if (isWithinPortal()) {
String username = null;
try {
ScopeProvider.instance.set(scope);
username = new LiferayUserManager().getUserById(userId).getUsername();
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;
}
/** /**
* *
* @param username * @param username