Project

General

Profile

1
package eu.dnetlib.openaire.rest;
2

    
3
import eu.dnetlib.openaire.rest.inputHandler.UserHandler;
4
import org.apache.log4j.Logger;
5

    
6
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.List;
9

    
10
/**
11
 * Created by sofia on 20/4/2017.
12
 */
13
public class Authorization {
14

    
15
    private static Logger logger = Logger.getLogger(Authorization.class);
16
    List<String> registeredRoles = new ArrayList<String>(Arrays.asList("Super Administrator", "Portal Administrator", "Expert - Community",
17
            "Expert - Funder", "Curator - Claim", "Curator - Project", "Curator - Community", "Curator - Institution", "Cuthor", "Registered", "User Manager"));
18
    List<String> adminRoles = new ArrayList<String>(Arrays.asList("Super Administrator", "Curator - Claim", "Portal Administrator"));
19
    List<String> projectCuratorRoles = new ArrayList<String>(Arrays.asList("Curator - Project"));
20
    UserHandler userHandler = null;
21
    String originServer = null;
22

    
23
    //    public static boolean isRegistered(String token) {
24
//
25
//        Claims claims = Jwts.parser()
26
//                .setSigningKey(DatatypeConverter.parseBase64Binary("my-very-secret"))
27
//                .parseClaimsJws(token).getBody();
28
//
29
//        if (claims.get("role").equals("1") || claims.get("role").equals("2")) {
30
//            logger.debug("It's  registered with role " + claims.get("role"));
31
//            return true;
32
//        } else {
33
//            logger.debug("It's *not*  registered with role " + claims.get("role"));
34
//
35
//            return false;
36
//        }
37
//    }
38
//
39
//    public static boolean isAdmin(String token) {
40
//        Claims claims = Jwts.parser()
41
//                .setSigningKey(DatatypeConverter.parseBase64Binary("my-very-secret"))
42
//                .parseClaimsJws(token).getBody();
43
//        if (claims.get("role").equals("2")) {
44
//            logger.debug("It's  admin with role " + claims.get("role"));
45
//            return true;
46
//        } else {
47
//            logger.debug("It's *not*  admin with role " + claims.get("role"));
48
//            return false;
49
//        }
50
//    }
51
    public boolean isRegistered(String token) {
52
        UserInfo userInfo = userHandler.getUserInfo(token);
53
        return isRegistered(userInfo);
54

    
55
    }
56
    public void logStatus(String token, String cookie) {
57

    
58
        if(token == null || token.isEmpty()) {
59
            logger.debug("No proper value: header \"X-XSRF-TOKEN\" has value " + token);
60
        }else if(cookie == null || cookie.isEmpty() || !cookie.equals(token)) {
61
            logger.debug("No proper value: cookie  \"AccessToken\" has value  " + cookie);
62
        }else if( !cookie.equals(token)) {
63
            logger.debug("No proper values:for cookie " + cookie + " and token "+token);
64
        }
65
    }
66

    
67
    public boolean isRegistered(UserInfo userInfo) {
68
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
69

    
70
            return hasRole(userInfo.getEdu_person_entitlements(), registeredRoles);
71
        } else {
72
            return false;
73
        }
74

    
75
    }
76

    
77
    public boolean isAdmin(String token) {
78
        UserInfo userInfo = userHandler.getUserInfo(token);
79
        return isAdmin(userInfo);
80

    
81
    }
82

    
83
    public boolean isAdmin(UserInfo userInfo) {
84
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
85

    
86
            return hasRole(userInfo.getEdu_person_entitlements(), adminRoles);
87
        } else {
88
            logger.debug(" User has no Valid UserInfo");
89
            return false;
90
        }
91

    
92
    }
93

    
94
    public boolean isProjectCurator(String token) {
95
        UserInfo userInfo = userHandler.getUserInfo(token);
96
        return isProjectCurator(userInfo);
97

    
98
    }
99

    
100
    public boolean isProjectCurator(UserInfo userInfo) {
101
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
102

    
103
            return hasRole(userInfo.getEdu_person_entitlements(), projectCuratorRoles);
104
        } else {
105
            return false;
106
        }
107

    
108
    }
109

    
110
    public boolean hasRole(List<String> givenRoles, List<String> authorizedRoles) {
111

    
112
        logger.debug("It's  registered with role " + givenRoles);
113
        for (String gRole : givenRoles) {
114
            if (authorizedRoles.indexOf(gRole) != -1) {
115
                return true;
116
            }
117
        }
118
        logger.debug("Not Authorized. Authorized roles are" + authorizedRoles);
119
        return false;
120

    
121
    }
122

    
123
    public boolean hasValidOrigin(String origin) {
124
        if (origin != null && originServer.equals(origin)) {
125
            return true;
126
        }
127
        logger.debug("Not valid origin. Origin server is \"" + origin + "\", but expected value is \"" + originServer + "\". If the expec cted value is not right, check properties file. ");
128
        return false;
129
    }
130

    
131
    public List<String> getRegisteredRoles() {
132
        return registeredRoles;
133
    }
134

    
135
    public void setRegisteredRoles(List<String> registeredRoles) {
136
        this.registeredRoles = registeredRoles;
137
    }
138

    
139
    public List<String> getAdminRoles() {
140
        return adminRoles;
141
    }
142

    
143
    public void setAdminRoles(List<String> adminRoles) {
144
        this.adminRoles = adminRoles;
145
    }
146

    
147
    public List<String> getProjectCuratorRoles() {
148
        return projectCuratorRoles;
149
    }
150

    
151
    public void setProjectCuratorRoles(List<String> projectCuratorRoles) {
152
        this.projectCuratorRoles = projectCuratorRoles;
153
    }
154

    
155
    public UserHandler getUserHandler() {
156
        return userHandler;
157
    }
158

    
159
    public void setUserHandler(UserHandler userHandler) {
160
        this.userHandler = userHandler;
161
    }
162

    
163
    public String getOriginServer() {
164
        return originServer;
165
    }
166

    
167
    public void setOriginServer(String originServer) {
168
        this.originServer = originServer;
169
    }
170
}
(1-1/3)