uoa-admin-tools/src/main/java/eu/dnetlib/uoaadmintools/handlers/utils/AuthorizationUtils.java

254 lines
9.4 KiB
Java

//package eu.dnetlib.uoaadmintools.handlers.utils;
//
//import org.apache.log4j.Logger;
//
//import javax.servlet.http.Cookie;
//import javax.servlet.http.HttpServletRequest;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;
//import java.io.StringReader;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.util.Enumeration;
//
//import com.google.gson.Gson;
//
///**
// * Created by argirok on 27/2/2018.
// */
//public class AuthorizationUtils {
// private final Logger log = Logger.getLogger(this.getClass());
// private String userInfoUrl = null;
//// private String communityAPI ="";
//// List<String> adminRoles = new ArrayList<String>(Arrays.asList("Super Administrator", "Portal Administrator"));
// private String originServer= null;
// public Boolean checkCookies(HttpServletRequest request){
// Boolean valid = true;
// String cookieValue = this.getCookie(request,"AccessToken");
// if(cookieValue == null || cookieValue.isEmpty()){
// log.info("no cookie available ");
// valid = false;
// }else {
// String headerValue = this.getHeadersInfo(request, "x-xsrf-token");
// if(headerValue == null || headerValue.isEmpty()){
// log.info("no header available ");
// valid = false;
// }else{
// if(!cookieValue.equals(headerValue)){
// log.info("no proper header or cookie ");
// valid = false;
// }else if(!hasValidOrigin(this.getHeadersInfo(request, "origin"))){
// log.info("no proper origin ");
// valid = false;
// }
// }
// }
// return valid;
// }
// public String getToken(HttpServletRequest request){
// return this.getHeadersInfo(request, "x-xsrf-token");
// }
// private String getCookie(HttpServletRequest request, String cookieName){
// if(request.getCookies() == null){
// return null;
// }
// for(Cookie c: request.getCookies()){
//// log.debug("cookie "+ c.getName()+ " "+ c.getValue());
// if(c.getName().equals(cookieName)){
// return c.getValue();
// }
//
// }
// return null;
// }
// private String getHeadersInfo(HttpServletRequest request, String name) {
//
// Enumeration headerNames = request.getHeaderNames();
// while (headerNames.hasMoreElements()) {
// String key = (String) headerNames.nextElement();
// String value = request.getHeader(key);
//// log.debug(" key: "+ key+" value: "+ value);
// if(name.equals(key)){
// return value;
// }
// }
// return null;
// }
// public boolean hasValidOrigin(String origin) {
// if (origin != null && origin.indexOf(originServer)!=-1) {
// return true;
// }
// log.debug("Not valid origin. Origin server is \"" + origin + "\", but expected value is \"" + originServer + "\". If the expec cted value is not right, check properties file. ");
// return false;
// }
// public UserInfo getUserInfo(String accessToken){
// String url=userInfoUrl+accessToken;
// URL obj = null;
// String responseStr=null;
//// log.debug("User info url is "+url);
//
// try {
// obj = new URL(url);
// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// if (con.getResponseCode() != 200) {
// log.debug("User info response code is: " + con.getResponseCode());
// return null;
// }
// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
// StringBuffer response = new StringBuffer();
// String inputLine;
// while ((inputLine = in.readLine()) != null) {
// response.append(inputLine).append("\n");
// }
// in.close();
// responseStr = response.toString();
// }catch(Exception e){
// log.error("An error occured while trying to fetch user info ",e);
// return null;
// }
// return json2UserInfo(responseStr);
// }
// private UserInfo json2UserInfo(String json) {
//
//// log.debug("Try to create userInfo class from json: "+json);
// if (json == null){
// return null;
// }
//
// BufferedReader br = new BufferedReader(new StringReader(json));
// //convert the json string back to object
// Gson gson = new Gson();
// UserInfo userInfo = null;
// try {
// userInfo = gson.fromJson(br, UserInfo.class);
// }catch(Exception e){
// log.debug("Error in parsing json response. Given json is : "+json, e);
// return null;
// }
//
//// log.debug("Original response.........: "+userInfo.toString());
// try {
// if(userInfo != null && userInfo.getEdu_person_entitlements() != null ) {
//
// for (int i = 0; i < userInfo.getEdu_person_entitlements().size(); i++) {
// String role = userInfo.getEdu_person_entitlements().get(i);
//// log.debug("AAI role: "+role);
// role = role.split(":")[role.split(":").length-1];
// role = role.replace("+"," ");
//// log.debug("Adding parsed role : "+role);
// userInfo.getEdu_person_entitlements().set(i,role);
// }
// }
// }catch(Exception e){
// log.debug("Error in parsing Edu_person_entitlements : ",e);
// return null;
// }
//// log.debug("After handling roles : "+userInfo.toString());
//
//
// return userInfo;
// }
// public boolean isAuthorized(String token) {
// UserInfo userInfo = getUserInfo(token);
// if (userInfo != null ) {
// return true;
// } else {
// log.debug(" User has no Valid UserInfo");
// return false;
// }
//
// }
//
// public String getUserInfoUrl() {
// return userInfoUrl;
// }
//
// public String getOriginServer() {
// return originServer;
// }
//
// public void setUserInfoUrl(String userInfoUrl) {
// this.userInfoUrl = userInfoUrl;
// }
//
// public void setOriginServer(String originServer) {
// this.originServer = originServer;
// }
// // private boolean hasRole(List<String> givenRoles, List<String> authorizedRoles) {
//// log.debug("It's registered with role " + givenRoles);
//// for (String gRole : givenRoles) {
//// if (authorizedRoles.indexOf(gRole) != -1) {
//// return true;
//// }
//// }
//// log.debug("Not Authorized. Authorized roles are" + authorizedRoles);
//// return false;
////
//// }
//// private boolean isCommunityManager(String community, String email) {
////
//// CommunityInfo communityInfo = getCommunityInfo(community);
//// if(communityInfo != null && communityInfo.getManagers() != null ) {
////
//// for (int i = 0; i < communityInfo.getManagers().size(); i++) {
//// String manager = communityInfo.getManagers().get(i);
//// log.debug("Community manager: "+manager);
////
//// }
//// }
//// return false;
////
//// }
//// private CommunityInfo getCommunityInfo(String community) {
//// String url = userInfoUrl + community;
//// URL obj = null;
//// String responseStr = null;
//// log.debug("Community info url is " + url);
////
//// try {
//// obj = new URL(url);
//// HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//// log.debug("User info response code is: " + con.getResponseCode());
//// if (con.getResponseCode() != 200) {
//// return null;
//// }
//// BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
//// StringBuffer response = new StringBuffer();
//// String inputLine;
//// while ((inputLine = in.readLine()) != null) {
//// response.append(inputLine).append("\n");
//// }
//// in.close();
//// responseStr = response.toString();
//// } catch (Exception e) {
//// log.error("An error occured while trying to fetch user info ", e);
//// return null;
//// }
//// return json2CommunityInfo(community);
//// }
//// private CommunityInfo json2CommunityInfo(String json){
////
//// log.debug("Try to create CommunityInfo class from json: "+json);
//// if (json == null){
//// return null;
//// }
////
//// BufferedReader br = new BufferedReader(new StringReader(json));
//// //convert the json string back to object
//// Gson gson = new Gson();
//// CommunityInfo communityInfo = null;
//// try {
//// communityInfo = gson.fromJson(br, CommunityInfo.class);
//// }catch(Exception e){
//// log.debug("Error in parsing json response. Given json is : "+json, e);
//// return null;
//// }
////
//// log.debug("Original response.........: "+communityInfo.toString());
////
////
////
//// return communityInfo;
//// }
//}