Project

General

Profile

1
package eu.dnetlib.uoaauthorizationlibrary.security;
2

    
3
import org.apache.log4j.Logger;
4
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
5
import org.mitre.openid.connect.model.UserInfo;
6
import org.springframework.security.core.Authentication;
7
import org.springframework.security.core.GrantedAuthority;
8
import org.springframework.security.core.context.SecurityContextHolder;
9
import org.springframework.security.core.userdetails.User;
10
import org.springframework.stereotype.Component;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14

    
15
@Component(value = "AuthorizationService")
16
public class AuthorizationService {
17
    private final Logger log = Logger.getLogger(this.getClass());
18

    
19
    public final String PORTAL_ADMIN = "PORTAL_ADMINISTRATOR";
20
    public final String ANONYMOUS_USER = "ROLE_ANONYMOUS";
21
    public final String REGISTERED_USER = "REGISTERED_USER";
22

    
23

    
24
    private String mapType(String type, boolean communityMap) {
25
        if (type.equals("organization")) {
26
            type = "institution";
27
        } else if (type.equals("ri") && communityMap) {
28
            type = "community";
29
        }
30
        return type;
31
    }
32

    
33
    /**
34
     * Type = FUNDER | COMMUNITY | INSTITUTION | PROJECT
35
     */
36
    public String curator(String type) {
37
        return "CURATOR_" + mapType(type, true).toUpperCase();
38
    }
39

    
40
    /**
41
     * Type = FUNDER | COMMUNITY | INSTITUTION | PROJECT
42
     * <p>
43
     * Id = EE, EGI, etc
44
     */
45
    public String manager(String type, String id) {
46
        return mapType(type, true).toUpperCase() + "_" + id.toUpperCase() + "_MANAGER";
47
    }
48

    
49
    /**
50
     * Type = FUNDER | COMMUNITY | RI | INSTITUTION | PROJECT
51
     * <p>
52
     * Id = EE, EGI, etc
53
     */
54
    public String member(String type, String id) {
55
        return mapType(type, false).toUpperCase() + "_" + id.toUpperCase();
56
    }
57

    
58
    public List<String> getRoles() {
59
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
60
        if (authentication != null) {
61
            List<GrantedAuthority> authorities = (List<GrantedAuthority>) authentication.getAuthorities();
62
            if (authorities != null) {
63
                List<String> roles = new ArrayList<>();
64
                authorities.forEach((authority) -> {
65
                    roles.add(authority.getAuthority());
66
                });
67
                return roles;
68
            }
69
        }
70
        return null;
71
    }
72

    
73
    public String getAaiId() {
74
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
75
        return authentication instanceof OIDCAuthenticationToken ? ((OIDCAuthenticationToken)authentication).getSub() : null;
76
    }
77
}
(1-1/5)