From: Andreas Kohlbecker Date: Thu, 6 Feb 2014 14:18:20 +0000 (+0000) Subject: part 2 of fixing #2414 (Group updating doesn't work) by committing and restarting... X-Git-Tag: 3.6.0~805 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/f4ba1ef6ee1e65042c2eb41a95bd48cedecf074f part 2 of fixing #2414 (Group updating doesn't work) by committing and restarting the transaction in the conversation --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java index 42c6e7493..8246dc63c 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java @@ -11,19 +11,24 @@ package eu.etaxonomy.taxeditor.store; import java.util.Observable; +import java.util.Set; +import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.ui.IMemento; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.LockedException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; +import eu.etaxonomy.cdm.model.common.Group; import eu.etaxonomy.cdm.model.common.User; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; +import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority; import eu.etaxonomy.taxeditor.model.IContextListener; /** @@ -35,6 +40,8 @@ import eu.etaxonomy.taxeditor.model.IContextListener; */ public class LoginManager extends Observable implements IConversationEnabled, IContextListener{ + public static final Logger logger = Logger.getLogger(LoginManager.class); + private ConversationHolder conversation; public LoginManager(){ @@ -56,11 +63,25 @@ public class LoginManager extends Observable implements IConversationEnabled, IC try{ getConversationHolder().bind(); + getConversationHolder().commit(); SecurityContextHolder.clearContext(); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password); Authentication authentication = CdmStore.getAuthenticationManager().authenticate(token); + + if(logger.isDebugEnabled()){ + User user = (User) authentication.getPrincipal(); + StringBuilder gaText = new StringBuilder(); + String indent = " "; + Set gaSet = user.getGrantedAuthorities(); + _logGrantedAuthotities(gaText, indent, gaSet); + for(Group gr : user.getGroups()){ + gaText.append(indent).append("gr[").append(gr.hashCode()).append("] ").append(gr.getName()).append(gr.toString()).append("\n"); + _logGrantedAuthotities(gaText, indent + indent, gr.getGrantedAuthorities()); + } + logger.debug("User authenticated: " + user.getUsername() + "\n" + gaText.toString()); + } SecurityContextHolder.getContext().setAuthentication(authentication); @@ -79,6 +100,13 @@ public class LoginManager extends Observable implements IConversationEnabled, IC } return false; } + + private void _logGrantedAuthotities(StringBuilder gaText, String indent, + Set gaSet) { + for(GrantedAuthority ga : gaSet){ + gaText.append(indent).append("ga[").append(ga.hashCode()).append("] ").append(ga.toString()).append("\n"); + } + } /** *

getAuthenticatedUser