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;
/**
*/
public class LoginManager extends Observable implements IConversationEnabled, IContextListener{
+ public static final Logger logger = Logger.getLogger(LoginManager.class);
+
private ConversationHolder conversation;
public LoginManager(){
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<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);
}
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>