94 lines
3.1 KiB
Java
94 lines
3.1 KiB
Java
package org.gcube.portlets.user;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Base64;
|
|
|
|
import javax.portlet.PortletException;
|
|
import javax.portlet.RenderRequest;
|
|
import javax.portlet.RenderResponse;
|
|
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 com.liferay.portal.kernel.log.LogFactoryUtil;
|
|
import com.liferay.portal.util.PortalUtil;
|
|
import com.liferay.util.bridges.mvc.MVCPortlet;
|
|
|
|
import okhttp3.*;
|
|
|
|
/**
|
|
* Portlet implementation class ExtAppManager
|
|
*/
|
|
public class ExtAppManager extends MVCPortlet {
|
|
private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(ExtAppManager.class);
|
|
final String D4S_BOOT_URL = "https://d4science-cdn.nubisware.cloud/d4s-cdn/visuals/d4s-boot";
|
|
final String EXT_APP_MANAGER_URL = "https://d4science-cdn.nubisware.cloud/d4s-cdn/visuals/ext-app-manager";
|
|
|
|
|
|
public static final String D4S_BOOT_ATTR = "d4s-boot-div";
|
|
public static final String EXT_APP_MANAGERATTR = "ext-app-div";
|
|
|
|
|
|
@Override
|
|
public void render(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException {
|
|
JWTToken umaToken = null;
|
|
try {
|
|
String username = PortalUtil.getUser(renderRequest).getScreenName();
|
|
HttpServletRequest httpReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest));
|
|
String context = getCurrentContext(renderRequest);
|
|
umaToken = OIDCUmaUtil.getUMAToken(httpReq, username, context);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
String token = umaToken.getAccessTokenString();
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
Request request = new Request.Builder()
|
|
.url(D4S_BOOT_URL)
|
|
.addHeader("cache-control", "no-cache")
|
|
.addHeader("Authorization", "Bearer " + token)
|
|
.build();
|
|
Call call = client.newCall(request);
|
|
Response response = call.execute();
|
|
String d4sBootDIV = response.body().string();
|
|
String encodedSd4sBootDIV = Base64.getEncoder().encodeToString(d4sBootDIV.getBytes());
|
|
renderRequest.setAttribute(D4S_BOOT_ATTR, encodedSd4sBootDIV);
|
|
request = new Request.Builder()
|
|
.url(EXT_APP_MANAGER_URL)
|
|
.addHeader("cache-control", "no-cache")
|
|
.addHeader("Authorization", "Bearer " + token)
|
|
.build();
|
|
call = client.newCall(request);
|
|
response = call.execute();
|
|
String extAppDIV = response.body().string();
|
|
String encodedextAppDIV = Base64.getEncoder().encodeToString(extAppDIV.getBytes());
|
|
renderRequest.setAttribute(EXT_APP_MANAGERATTR, encodedextAppDIV);
|
|
|
|
super.render(renderRequest, renderResponse);
|
|
}
|
|
|
|
public static String getCurrentContext(RenderRequest request) {
|
|
long groupId = -1;
|
|
try {
|
|
groupId = PortalUtil.getScopeGroupId(request);
|
|
return getCurrentContext(groupId);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static String getCurrentContext(long groupId) {
|
|
try {
|
|
PortalContext pContext = PortalContext.getConfiguration();
|
|
return pContext.getCurrentScope(""+groupId);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
}
|