part 2 of fixing #2414 (Group updating doesn't work) by committing and restarting...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 6 Feb 2014 14:18:20 +0000 (14:18 +0000)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 6 Feb 2014 14:18:20 +0000 (14:18 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/LoginManager.java

index 42c6e74930cf78578a5035d6f33747be26b750c0..8246dc63c39d3deb10e030e4b1bdb895d2668d70 100644 (file)
 package eu.etaxonomy.taxeditor.store;
 
 import java.util.Observable;
 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.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 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.model.common.User;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
 import eu.etaxonomy.taxeditor.model.IContextListener;
 
 /**
 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 class LoginManager extends Observable implements IConversationEnabled, IContextListener{
        
+       public static final Logger logger = Logger.getLogger(LoginManager.class);
+       
        private ConversationHolder conversation;
        
        public LoginManager(){
        private ConversationHolder conversation;
        
        public LoginManager(){
@@ -56,11 +63,25 @@ public class LoginManager extends Observable implements IConversationEnabled, IC
                
                try{
                        getConversationHolder().bind();
                
                try{
                        getConversationHolder().bind();
+                       getConversationHolder().commit();
                        
                        SecurityContextHolder.clearContext();
                        
                        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);                        
                        Authentication authentication = CdmStore.getAuthenticationManager().authenticate(token);
                        
                        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<GrantedAuthority> 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);                   
 
                
                        SecurityContextHolder.getContext().setAuthentication(authentication);                   
 
@@ -79,6 +100,13 @@ public class LoginManager extends Observable implements IConversationEnabled, IC
                }
                return false;
        }
                }
                return false;
        }
+
+       private void _logGrantedAuthotities(StringBuilder gaText, String indent,
+                       Set<GrantedAuthority> gaSet) {
+               for(GrantedAuthority ga : gaSet){
+                       gaText.append(indent).append("ga[").append(ga.hashCode()).append("] ").append(ga.toString()).append("\n");
+               }
+       }
        
        /**
         * <p>getAuthenticatedUser</p>
        
        /**
         * <p>getAuthenticatedUser</p>