83 lines
3.2 KiB
Java
83 lines
3.2 KiB
Java
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<GCubeGroup> userGroups = gm.listGroupsByUser(theUser.getUserId());
|
|
List<String> userContexts = new ArrayList<String>();
|
|
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);
|
|
}
|
|
}
|