Project

General

Profile

« Previous | Next » 

Revision 0f563a11

Added by Andreas Kohlbecker over 6 years ago

fixing bugs related to name editing in workingset editor

View differences:

src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java
10 10

  
11 11
import java.util.EnumSet;
12 12

  
13
import org.apache.log4j.Logger;
13 14
import org.springframework.beans.factory.annotation.Autowired;
14 15
import org.springframework.beans.factory.annotation.Qualifier;
15 16
import org.springframework.security.authentication.AnonymousAuthenticationToken;
16 17
import org.springframework.security.core.Authentication;
17 18
import org.springframework.security.core.context.SecurityContext;
18 19
import org.springframework.security.core.context.SecurityContextHolder;
20
import org.springframework.security.core.userdetails.UserDetails;
21
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
19 22

  
20 23
import com.vaadin.spring.annotation.SpringComponent;
21 24
import com.vaadin.spring.annotation.UIScope;
......
23 26
import eu.etaxonomy.cdm.api.application.CdmRepository;
24 27
import eu.etaxonomy.cdm.database.PermissionDeniedException;
25 28
import eu.etaxonomy.cdm.model.common.CdmBase;
29
import eu.etaxonomy.cdm.model.common.User;
26 30
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
31
import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
32
import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthorityParsingException;
27 33
import eu.etaxonomy.cdm.persistence.hibernate.permission.ICdmPermissionEvaluator;
28 34
import eu.etaxonomy.cdm.persistence.hibernate.permission.Role;
29 35
import eu.etaxonomy.cdm.vaadin.security.RolesAndPermissions;
......
38 44
@UIScope
39 45
public class CdmUserHelper extends VaadinUserHelper {
40 46

  
47
    public static final Logger logger = Logger.getLogger(CdmUserHelper.class);
48

  
41 49
    @Autowired
42 50
    private ICdmPermissionEvaluator permissionEvaluator;
43 51

  
......
170 178
        return currentSecurityContext().getAuthentication();
171 179
    }
172 180

  
181
    /**
182
     * @param username
183
     * @param cdmType
184
     * @param entitiyId
185
     * @param crud
186
     * @return
187
     */
188
    @Override
189
    public void createAuthorityFor(String username, Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud) {
190
        UserDetails userDetails = repo.getUserService().loadUserByUsername(username);
191
        if(userDetails != null){
192
            User user = (User)userDetails;
193
            CdmBase entity = repo.getCommonService().find(cdmType, entitiyId);
194
            CdmAuthority authority = new CdmAuthority(entity, crud);
195
            try {
196
                user.getGrantedAuthorities().add(authority.asNewGrantedAuthority());
197
            } catch (CdmAuthorityParsingException e) {
198
                throw new RuntimeException(e);
199
            }
200
            repo.getSession().flush();
201
            logger.debug("new authority for " + username + ": " + authority.toString());
202
            Authentication authentication = new PreAuthenticatedAuthenticationToken(user, user.getPassword(), user.getAuthorities());
203
            SecurityContextHolder.getContext().setAuthentication(authentication);
204
            logger.debug("security context refreshed with user " + username);
205
        }
206
    }
207

  
208
    /**
209
     * @param cdmType
210
     * @param entitiyId
211
     * @param crud
212
     * @return
213
     */
214
    @Override
215
    public void createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud) {
216
        createAuthorityFor(userName(), cdmType, entitiyId, crud);
217
    }
218

  
173 219
}

Also available in: Unified diff