Project

General

Profile

Download (1.83 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.vaadin.presenter;
2

    
3
import java.net.URI;
4

    
5
import org.springframework.security.authentication.AuthenticationManager;
6
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
7
import org.springframework.security.core.Authentication;
8
import org.springframework.security.core.context.SecurityContextHolder;
9

    
10
import com.vaadin.server.VaadinSession;
11

    
12
import eu.etaxonomy.cdm.vaadin.util.CdmSpringContextHelper;
13
import eu.etaxonomy.cdm.vaadin.util.CdmVaadinAuthentication;
14
import eu.etaxonomy.cdm.vaadin.util.CdmVaadinSessionUtilities;
15
import eu.etaxonomy.cdm.vaadin.view.IAuthenticationComponent;
16

    
17

    
18

    
19
public class AuthenticationPresenter implements IAuthenticationComponent.AuthenticationComponentListener{
20

    
21
    @Override
22
    public boolean login(URI uri, String context, String userName, String password) {
23
        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userName, password);
24
        AuthenticationManager authenticationManager = (AuthenticationManager) CdmSpringContextHelper.getCurrent().getBean("authenticationManager");
25
        Authentication authentication = authenticationManager.authenticate(token);
26
        if(authentication != null && authentication.isAuthenticated()) {
27
            SecurityContextHolder.getContext().setAuthentication(authentication);
28
            CdmVaadinAuthentication cvAuthentication = (CdmVaadinAuthentication) VaadinSession.getCurrent().getAttribute(CdmVaadinAuthentication.KEY);
29
            if(cvAuthentication == null) {
30
                cvAuthentication = new CdmVaadinAuthentication();
31
            }
32
            cvAuthentication.addAuthentication(uri, context, authentication);
33
            CdmVaadinSessionUtilities.setCurrentAttribute(CdmVaadinAuthentication.KEY, cvAuthentication);
34
            return true;
35
        }
36
        return false;
37
    }
38

    
39
}
(1-1/5)