Revision 0f563a11
Added by Andreas Kohlbecker over 6 years ago
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
fixing bugs related to name editing in workingset editor