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

    
57
    public boolean isRegistered(UserInfo userInfo) {
58
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
59

    
60
            return hasRole(userInfo.getEdu_person_entitlements(), registeredRoles);
61
        } else {
62
            return false;
63
        }
64

    
65
    }
66

    
67
    public boolean isAdmin(String token) {
68
        UserInfo userInfo = userHandler.getUserInfo(token);
69
        return isAdmin(userInfo);
70

    
71
    }
72

    
73
    public boolean isAdmin(UserInfo userInfo) {
74
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
75

    
76
            return hasRole(userInfo.getEdu_person_entitlements(), adminRoles);
77
        } else {
78
            logger.debug(" User has no Valid UserInfo");
79
            return false;
80
        }
81

    
82
    }
83

    
84
    public boolean isProjectCurator(String token) {
85
        UserInfo userInfo = userHandler.getUserInfo(token);
86
        return isProjectCurator(userInfo);
87

    
88
    }
89

    
90
    public boolean isProjectCurator(UserInfo userInfo) {
91
        if (userInfo != null && userInfo.getEdu_person_entitlements() != null) {
92

    
93
            return hasRole(userInfo.getEdu_person_entitlements(), projectCuratorRoles);
94
        } else {
95
            return false;
96
        }
97

    
98
    }
99

    
100
    public boolean hasRole(List<String> givenRoles, List<String> authorizedRoles) {
101

    
102
        logger.debug("It's  registered with role " + givenRoles);
103
        for (String gRole : givenRoles) {
104
            if (authorizedRoles.indexOf(gRole) != -1) {
105
                return true;
106
            }
107
        }
108
        logger.debug("Not Authorized. Authorized roles are" + authorizedRoles);
109
        return false;
110

    
111
    }
112

    
113
    public boolean hasValidOrigin(String origin) {
114
        if (origin != null && originServer.equals(origin)) {
115
            return true;
116
        }
117
        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. ");
118
        return false;
119
    }
120

    
121
    public List<String> getRegisteredRoles() {
122
        return registeredRoles;
123
    }
124

    
125
    public void setRegisteredRoles(List<String> registeredRoles) {
126
        this.registeredRoles = registeredRoles;
127
    }
128

    
129
    public List<String> getAdminRoles() {
130
        return adminRoles;
131
    }
132

    
133
    public void setAdminRoles(List<String> adminRoles) {
134
        this.adminRoles = adminRoles;
135
    }
136

    
137
    public List<String> getProjectCuratorRoles() {
138
        return projectCuratorRoles;
139
    }
140

    
141
    public void setProjectCuratorRoles(List<String> projectCuratorRoles) {
142
        this.projectCuratorRoles = projectCuratorRoles;
143
    }
144

    
145
    public UserHandler getUserHandler() {
146
        return userHandler;
147
    }
148

    
149
    public void setUserHandler(UserHandler userHandler) {
150
        this.userHandler = userHandler;
151
    }
152

    
153
    public String getOriginServer() {
154
        return originServer;
155
    }
156

    
157
    public void setOriginServer(String originServer) {
158
        this.originServer = originServer;
159
    }
160
}
(1-1/3)