package it.inaf.ia2.vollt; import it.inaf.ia2.aa.ServiceLocator; import it.inaf.ia2.aa.data.User; import it.inaf.ia2.aa.jwt.InvalidTokenException; import java.util.Arrays; import java.util.Map; import javax.servlet.http.HttpServletRequest; import uws.UWSException; import uws.job.user.JobOwner; import uws.service.UWSUrl; import uws.service.UserIdentifier; public class IA2UserIdentifier implements UserIdentifier { @Override public JobOwner extractUserId(UWSUrl urlInterpreter, HttpServletRequest request) throws UWSException { String token = null; String header = request.getHeader("Authorization"); if (header != null && !header.isEmpty()) { if (header.startsWith("Bearer ")) { token = header.substring("Bearer ".length()); } } return getUser(token); } @Override public JobOwner restoreUser(String id, String pseudo, Map otherData) throws UWSException { throw new UnsupportedOperationException("Not supported yet."); } private CustomJobOwner getUser(String token) throws UWSException { if (token != null) { try { User user = ServiceLocator.getInstance().getUserManager().getUserFromAccessToken(token); return new CustomJobOwner(user.getName(), user.getGroups()); } catch (InvalidTokenException ex) { throw new UWSException(401, "Invalid token"); } } return new CustomJobOwner("anonymous", Arrays.asList()); } }