Project

General

Profile

Download (6.33 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.service;
10

    
11
import java.io.Serializable;
12
import java.util.Collection;
13
import java.util.EnumSet;
14
import java.util.UUID;
15

    
16
import org.apache.log4j.Logger;
17
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.beans.factory.annotation.Qualifier;
19
import org.springframework.security.core.Authentication;
20
import org.springframework.security.core.context.SecurityContext;
21
import org.springframework.security.core.context.SecurityContextHolder;
22

    
23
import com.vaadin.spring.annotation.SpringComponent;
24
import com.vaadin.spring.annotation.UIScope;
25

    
26
import eu.etaxonomy.cdm.api.utility.SecurityContextAccess;
27
import eu.etaxonomy.cdm.api.utility.UserHelper;
28
import eu.etaxonomy.cdm.model.common.CdmBase;
29
import eu.etaxonomy.cdm.model.common.User;
30
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
31
import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
32
import eu.etaxonomy.cdm.vaadin.permission.AbstractVaadinUserHelper;
33
import eu.etaxonomy.cdm.vaadin.permission.RolesAndPermissions;
34

    
35
/**
36
 * @author a.kohlbecker
37
 * @since May 19, 2017
38
 *
39
 */
40
@SpringComponent
41
@UIScope
42
public class VaadinCdmUserHelper extends AbstractVaadinUserHelper implements SecurityContextAccess, Serializable {
43

    
44
    private static final long serialVersionUID = -2521474709047255979L;
45

    
46
    public static final Logger logger = Logger.getLogger(VaadinCdmUserHelper.class);
47

    
48
    private UserHelper userHelper;
49
    @Autowired
50
    @Qualifier("cdmUserHelper")
51
    public void setUserHelper(UserHelper userHelper){
52
        this.userHelper = userHelper;
53
        userHelper.setSecurityContextAccess(this);
54
    }
55

    
56
    public VaadinCdmUserHelper(){
57
        super();
58

    
59
    }
60

    
61
    @Override
62
    public boolean userIsAutheticated() {
63
        return userHelper.userIsAutheticated();
64
    }
65

    
66

    
67
    @Override
68
    public boolean userIsAnnonymous() {
69
        return userHelper.userIsAnnonymous();
70
    }
71

    
72
    @Override
73
    public User user() {
74
        return userHelper.user();
75
    }
76

    
77
    @Override
78
    public String userName() {
79
        return userHelper.userName();
80
    }
81

    
82
    @Override
83
    public boolean userIsAdmin() {
84
        return userHelper.userIsAdmin();
85
    }
86

    
87
    @Override
88
    public boolean userIsRegistrationCurator() {
89
        Authentication authentication = userHelper.getAuthentication();
90
        if(authentication != null) {
91
            return authentication.getAuthorities().stream().anyMatch(a -> {
92
                return a.equals(RolesAndPermissions.ROLE_CURATION)
93
                        // doing faster regex check here instreas of using CdmAuthoritiy.fromString()
94
                        || a.getAuthority().matches("^Registration\\.\\[.*UPDATE");
95
            });
96
        }
97
        return false;
98
    }
99

    
100
    @Override
101
    public boolean userHasPermission(CdmBase entity, Object ... args){
102
        return userHelper.userHasPermission(entity, args);
103
    }
104

    
105
    @Override
106
    public boolean userHasPermission(Class<? extends CdmBase> cdmType, Integer entitiyId, Object ... args){
107
        return userHelper.userHasPermission(cdmType, entitiyId, args);
108
    }
109

    
110
    @Override
111
    public boolean userHasPermission(Class<? extends CdmBase> cdmType, UUID entitiyUuid, Object ... args){
112
        return userHelper.userHasPermission(cdmType, entitiyUuid, args);
113
    }
114

    
115
    @Override
116
    public boolean userHasPermission(Class<? extends CdmBase> cdmType, Object ... args){
117
        return userHelper.userHasPermission(cdmType, args);
118
    }
119

    
120
    @Override
121
    public void logout() {
122
        userHelper.logout();
123
    }
124

    
125

    
126
    /**
127
     * @return
128
     *
129
     * FIXME is it ok to use the SecurityContextHolder or do we need to hold the context in the vaadin session?
130
     */
131
    @Override
132
    public SecurityContext currentSecurityContext() {
133
        return SecurityContextHolder.getContext();
134
    }
135

    
136

    
137
    @Override
138
    public CdmAuthority createAuthorityFor(String username, CdmBase cdmEntity, EnumSet<CRUD> crud, String property) {
139
        return userHelper.createAuthorityFor(username, cdmEntity, crud, property);
140
    }
141

    
142

    
143
    @Override
144
    public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property) {
145
        return userHelper.createAuthorityFor(username, cdmType, entitiyId, crud, property);
146
    }
147

    
148

    
149
    @Override
150
    public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
151
        return userHelper.createAuthorityFor(username, cdmType, entitiyUuid, crud, property);
152
    }
153

    
154

    
155
    @Override
156
    public CdmAuthority createAuthorityForCurrentUser(CdmBase cdmEntity, EnumSet<CRUD> crud, String property) {
157
        return userHelper.createAuthorityForCurrentUser(cdmEntity, crud, property);
158

    
159
    }
160

    
161

    
162
    @Override
163
    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property) {
164
        return createAuthorityFor(userName(), cdmType, entitiyId, crud, property);
165
    }
166

    
167

    
168
    @Override
169
    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
170
        return userHelper.createAuthorityForCurrentUser(cdmType, entitiyUuid, crud, property);
171
    }
172

    
173

    
174
    @Override
175
    public void removeAuthorityForCurrentUser(CdmAuthority cdmAuthority) {
176
        userHelper.removeAuthorityForCurrentUser(cdmAuthority);
177
    }
178

    
179

    
180
    @Override
181
    public void removeAuthorityForCurrentUser(String username, CdmAuthority cdmAuthority) {
182
        userHelper.removeAuthorityForCurrentUser(username, cdmAuthority);
183
    }
184

    
185

    
186
    @Override
187
    public Collection<CdmAuthority> findUserPermissions(CdmBase cdmEntity, EnumSet<CRUD> crud) {
188
        return userHelper.findUserPermissions(cdmEntity, crud);
189
    }
190

    
191
    /**
192
     * {@inheritDoc}
193
     */
194
    @Override
195
    public void setSecurityContextAccess(SecurityContextAccess securityContextAccess) {
196
        userHelper.setSecurityContextAccess(securityContextAccess);
197
    }
198

    
199
    /**
200
     * {@inheritDoc}
201
     */
202
    @Override
203
    public Authentication getAuthentication() {
204
        return userHelper.getAuthentication();
205
    }
206

    
207
}
(10-10/10)