package eu.dnetlib.repo.manager.config; import com.google.gson.JsonObject; import org.apache.log4j.Logger; import org.mitre.openid.connect.model.OIDCAuthenticationToken; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import com.google.gson.*; public class FrontEndLinkURIAuthenticationSuccessHandler implements AuthenticationSuccessHandler { private String frontEndURI; private static final Logger LOGGER = Logger .getLogger(FrontEndLinkURIAuthenticationSuccessHandler.class); public void init(){ LOGGER.debug("Front end uri : " + frontEndURI); } @Value("${aai.mode}") private String aai_mode; @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { OIDCAuthenticationToken authOIDC = (OIDCAuthenticationToken) authentication; JsonObject userInfo = new JsonObject(); if (authOIDC.getUserInfo().getSub() == null) userInfo.addProperty("sub", ""); else userInfo.addProperty("sub", URLEncoder.encode(authOIDC.getUserInfo().getSub(), "UTF-8")); if(authOIDC.getUserInfo().getName() != null) userInfo.addProperty("fullname", URLEncoder.encode(authOIDC.getUserInfo().getName(), "UTF-8")); if (authOIDC.getUserInfo().getGivenName() == null) userInfo.addProperty("firstname", ""); else userInfo.addProperty("firstname", URLEncoder.encode(authOIDC.getUserInfo().getGivenName(), "UTF-8") + ""); if (authOIDC.getUserInfo().getFamilyName() == null) userInfo.addProperty("lastname", ""); else userInfo.addProperty("lastname", URLEncoder.encode(authOIDC.getUserInfo().getFamilyName(), "UTF-8") + ""); userInfo.addProperty("email", authOIDC.getUserInfo().getEmail() + ""); if (authOIDC.getUserInfo().getSource().getAsJsonArray("edu_person_entitlements") == null) userInfo.addProperty("role", ""); else userInfo.addProperty("role", URLEncoder.encode(authOIDC.getUserInfo() .getSource().getAsJsonArray("edu_person_entitlements").toString(), "UTF-8") + ""); Cookie openAIREUser = new Cookie("openAIREUser", new Gson().toJson(userInfo) ); openAIREUser.setMaxAge(14400); openAIREUser.setPath("/"); if(aai_mode.equalsIgnoreCase("production") || aai_mode.equalsIgnoreCase("beta")) openAIREUser .setDomain(".openaire.eu"); // openAIREUser.setDomain(".athenarc.gr"); response.addCookie(openAIREUser); Cookie accessToken = new Cookie("AccessToken", authOIDC.getAccessTokenValue()); accessToken.setMaxAge(14400); if(aai_mode.equalsIgnoreCase("production") || aai_mode.equalsIgnoreCase("beta")) accessToken.setDomain(".openaire.eu"); accessToken.setPath("/"); // accessToken.setDomain(".athenarc.gr"); response.addCookie(accessToken); response.sendRedirect(frontEndURI); } public String getFrontEndURI() { return frontEndURI; } public void setFrontEndURI(String frontEndURI) { this.frontEndURI = frontEndURI; } }