Project

General

Profile

1
package eu.dnetlib.openaire.rest.inputHandler;
2

    
3
import com.google.gson.Gson;
4
import eu.dnetlib.openaire.rest.UserInfo;
5
import org.apache.logging.log4j.LogManager;
6
import org.apache.logging.log4j.Logger;
7

    
8
import java.io.BufferedReader;
9
import java.io.IOException;
10
import java.io.InputStreamReader;
11
import java.io.StringReader;
12
import java.net.HttpURLConnection;
13
import java.net.URL;
14

    
15
/**
16
 * Created by sofia on 20/4/2017.
17
 */
18
public class UserHandler{
19
    private static Logger logger = LogManager.getLogger(UserHandler.class);
20

    
21
    String userInfoUrl = null;
22
//        public  String getMail(String token) {
23
//
24
//            Claims claims = Jwts.parser()
25
//                    .setSigningKey(DatatypeConverter.parseBase64Binary("my-very-secret"))
26
//                    .parseClaimsJws(token).getBody();
27
//
28
//            return (String) claims.get("email");
29
//
30
//        }
31

    
32
    public  UserInfo getUserInfo(String accessToken){
33
        String url=userInfoUrl+accessToken;
34
        URL obj = null;
35
        String responseStr=null;
36
        logger.debug("User info url is "+url);
37

    
38
            try {
39
                obj = new URL(url);
40
                HttpURLConnection con = (HttpURLConnection) obj.openConnection();
41
                logger.debug("User info response code is: " + con.getResponseCode());
42
                if (con.getResponseCode() != 200) {
43
                    return null;
44
                }
45
                BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
46
                StringBuffer response = new StringBuffer();
47
                String inputLine;
48
                while ((inputLine = in.readLine()) != null) {
49
                    response.append(inputLine).append("\n");
50
                }
51
                in.close();
52
                responseStr = response.toString();
53
            }catch(Exception e){
54
                logger.error("An error occured while trying to fetch user info ",e);
55
                return null;
56
            }
57
        return json2UserInfo(responseStr);
58
    }
59

    
60
    private  UserInfo json2UserInfo(String json) {
61

    
62
//        logger.debug("Try to create userInfo class from json: "+json);
63
         if (json == null){
64
            return null;
65
        }
66

    
67
        BufferedReader br = new BufferedReader(new StringReader(json));
68
        //convert the json string back to object
69
        Gson gson = new Gson();
70
        UserInfo userInfo = null;
71
        try {
72
            userInfo = gson.fromJson(br, UserInfo.class);
73
        }catch(Exception e){
74
            logger.debug("Error in parsing json response. Given json is : "+json, e);
75
            return null;
76
        }
77

    
78
//        logger.debug("Original response.........: "+userInfo.toString());
79
        try {
80
        if(userInfo != null && userInfo.getEdu_person_entitlements() != null ) {
81

    
82
            for (int i = 0; i < userInfo.getEdu_person_entitlements().size(); i++) {
83
                String role = userInfo.getEdu_person_entitlements().get(i);
84
//                logger.debug("AAI role: "+role);
85
                role = role.split(":")[role.split(":").length-1];
86
                role = role.split("#")[0];
87
                role = role.replace("+"," ");
88
//                logger.debug("Adding parsed role : "+role);
89
                userInfo.getEdu_person_entitlements().set(i,role);
90
            }
91
        }
92
        }catch(Exception e){
93
            logger.debug("Error in parsing  Edu_person_entitlements : ",e);
94
            return null;
95
        }
96
        logger.debug("After handling roles : "+userInfo.toString());
97

    
98

    
99
        return userInfo;
100
    }
101

    
102
    public String getUserInfoUrl() {
103
        return userInfoUrl;
104
    }
105

    
106
    public void setUserInfoUrl(String userInfoUrl) {
107
        this.userInfoUrl = userInfoUrl;
108
    }
109

    
110
    public static void main(String[] args) throws IOException {
111
//        BasicConfigurator.configure();
112
//        ApplicationContext context = new ClassPathXmlApplicationContext("eu/dnetlib/openaire/rest/springContext-claims-authorization.xml");
113
//
114
//        Authorization authorization =  context.getBean(Authorization.class);
115
//        UserHandler userHandler = context.getBean(UserHandler.class);
116
//        System.out.println("\n\nAdmin Roles "+authorization.getAdminRoles().size()+"   "+authorization.getAdminRoles()+"\n\n\n");
117
//        System.out.println("\n\ngetProjectCuratorRoles Roles "+authorization.getProjectCuratorRoles().size()+"   "+authorization.getProjectCuratorRoles()+"\n\n\n");
118
//        System.out.println("\n\ngetRegisteredRoles Roles "+authorization.getRegisteredRoles().size()+"   "+authorization.getRegisteredRoles()+"\n\n\n");
119
//        System.out.println("\n\nIs Admin::\n"+authorization.isRegistered("eyJraWQiOiJvaWRjIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwOTMxNzMwMTMyODMzNjMyQG9wZW5taW50ZWQuZXUiLCJhenAiOiIyNGU4MzE3Ni0xMzEyLTRiYTMtYmMwYi1mZmVlYmVhMTYwM2UiLCJpc3MiOiJodHRwczpcL1wvYWFpLm9wZW5taW50ZWQuZXVcL29pZGNcLyIsImV4cCI6MTQ5OTg4MjI4NCwiaWF0IjoxNDk5ODY3ODg0LCJqdGkiOiIxNzJiOWNkYS1kNmZjLTQ3MTgtYTI1My02YTJjYmNiYmI0ZWIifQ.XtKm96oOeRe0_7mzr_NPdFAG6JJN3dh9Oy6-bFHE59UaN3TMuZAYgLND49vryWK_m4s23F_1TvZAN7WMDnkx3YH6RqTUsMS57sJGIOoDg4eYSzgDfLriyaANqp1Fh2PotMXWuFZXmtKdyLYw2jfcnBXjfd7DkMHylsFWII88GQVRFujsrJfjr5DKcz09Ad_tF874r-Emq0ARxtSHjmjp56cKmiia9GcjOgMVRMdUgArVKPToiMoYizXyG51t3yOnYI6JI0batB3UjmocX-YXBJmLZfS3zqlaKuf_hHgcs09EQK_McJ_igpgZ9CeBUHyDzzITtniLmftKB7o_AfxaMw")
120
//                +"\n\n\n");
121
//        userHandler.json2UserInfo("{\"sub\":\"123456@openminted.eu\",\"name\":\"όνομα και επιθετο\",\"given_name\":\"όνομα\",\"family_name\":\"επίθετο\",\"email\":\"mail1@mail.com\",\"edu_person_entitlements\":[\"urn:mace:openminted.eu:aai.openminted.eu:group:OpenAIRE+Super+Administrator\",\"urn:mace:openminted.eu:aai.openminted.eu:group:OpenAIRE+User+Manager\"]}");
122
//        UserInfo u = userHandler.json2UserInfo("{\"sub\":\"12345678@openminted.eu\",\"name\":\" a name\",\"given_name\":\"a\",\"family_name\":\"name\",\"email\":\"mail2@mail.com\",\"edu_person_scoped_affiliations\":[\"faculty@university\"],\"edu_person_entitlements\":[\"urn:mace:openminted.eu:aai.openminted.eu:group:OpenAIRE+Super+Administrator\"]}");
123
//        boolean b=authorization.isProjectCurator(u);
124
//        System.out.println(b);
125
//        userHandler.json2UserInfo("{\"sub\":\"1234567899@openminted.eu\",\"name\":\" test name\",\"given_name\":\"test\",\"family_name\":\"test surname\",\"email\":\"mail2@mail.com\",\"edu_person_scoped_affiliations\":[\"faculty@uni\"]}");
126
//        userHandler.json2UserInfo(null);
127
//        userHandler.json2UserInfo("mpla mpla mpla .... {}");
128
//        userHandler.getUserInfo("eyJraWQiOiJvaWRjIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwOTMxNzMwMTMyODMzNjMyQG9wZW5taW50ZWQuZXUiLCJhenAiOiIyNGU4MzE3Ni0xMzEyLTRiYTMtYmMwYi1mZmVlYmVhMTYwM2UiLCJpc3MiOiJodHRwczpcL1wvYWFpLm9wZW5taW50ZWQuZXVcL29pZGNcLyIsImV4cCI6MTQ5ODQ4NTk3NiwiaWF0IjoxNDk4NDcxNTc2LCJqdGkiOiJkMWRlZjc1Yi00MTEyLTRiZDktYTIyNi0wZThhOWI2M2Y3MWQifQ.WVYOb_yO8OaxIIt2jRYEDQBhGGFRDTBw3DgtVV_smuN5yx1ScCj6aehLu3JKPSArme4m2SGF4TEGhpwNJkwhM2WapGtxmtuCmCzYIo_QlC1Yki9hr2OT2rXMcQsJCiKaBSf6pLue6Sn78GMB5yaUTvOQHRgidXGiZXH5lsuZUx15Q6Equ_wzond_rgP9mRheRkTyIFuvvg4PuzmudBc11Ty863vIIQtoWF7_p98zTbHxiNF9lLPwzPZKxDoQ8JeayQEC-jsWVLgxmp-h0jG_Ko5jFVVJeeosqMMucOrs2FT_NKHVYVqB6VVh0C6nOufeiLrNDeMUlDT4dAvKD2zE9w");
129
    }
130
}
    (1-1/1)