package org.gcube.portlets.admin; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import javax.servlet.http.HttpServletRequest; import org.gcube.common.portal.PortalContext; import org.gcube.oidc.rest.JWTToken; import org.gcube.portal.oidc.lr62.OIDCUmaUtil; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager; import org.gcube.vomanagement.usermanagement.model.GCubeGroup; import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.liferay.portal.kernel.json.JSONObject; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.model.User; import com.liferay.portal.util.PortalUtil; import com.liferay.util.bridges.mvc.MVCPortlet; /** * Portlet implementation class RPTTokenReader */ public class RPTTokenReader extends MVCPortlet { @Override public void render(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException { GroupManager gm = new LiferayGroupManager(); try { User theUser = PortalUtil.getUser(renderRequest); List userGroups = gm.listGroupsByUser(theUser.getUserId()); List userContexts = new ArrayList(); for (GCubeGroup g : userGroups) { if (g.getGroupName().equals(PortalContext.getConfiguration().getInfrastructureName())) { String context = gm.getInfrastructureScope(g.getGroupId()); userContexts.add(context); } if (g.getParentGroupId() > 0) { String context = gm.getInfrastructureScope(g.getGroupId()); userContexts.add(context); } } renderRequest.setAttribute("userGroups", userGroups); renderRequest.setAttribute("userContexts", userContexts); } catch (Exception e) { e.printStackTrace(); } super.render(renderRequest, renderResponse); } public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException { String context = ParamUtil.getString(resourceRequest, "context", null); System.out.println("Selected context="+context); HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(resourceRequest)); JWTToken umaToken = null; try { String username = PortalUtil.getUser(resourceRequest).getScreenName(); umaToken = OIDCUmaUtil.getUMAToken(httpReq, username, context); } catch (Exception e) { e.printStackTrace(); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("success", false); jsonObject.put("comment", e.getMessage()); resourceResponse.getWriter().println(jsonObject); super.serveResource(resourceRequest, resourceResponse); } String toReturn = umaToken.getAccessTokenString(); resourceResponse.setContentType("application/json"); JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); jsonObject.put("success", true); jsonObject.put("comment", toReturn); resourceResponse.getWriter().println(jsonObject); super.serveResource(resourceRequest, resourceResponse); } }