Subversion Repositories bacoAlunos

Rev

Rev 2049 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2018 es 1
package pt.estgp.es.exemplos.hibernate.services;
2
 
3
import pt.estgp.es.exemplos.hibernate.HibernateUtils;
4
import pt.estgp.es.exemplos.hibernate.User;
5
import pt.estgp.es.exemplos.hibernate.UserSession;
6
import pt.estgp.es.exemplos.hibernate.UserSessionImpl;
7
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider;
2072 es 8
import pt.estgp.es.exemplos.hibernate.security.logic.NotAuthenticatedException;
2018 es 9
import pt.estgp.es.exemplos.hibernate.security.logic.Transaction;
10
 
11
import javax.servlet.http.HttpServletRequest;
2072 es 12
import java.util.List;
2018 es 13
 
2072 es 14
import static org.hibernate.criterion.Restrictions.eq;
15
 
2018 es 16
public class ServicoSessoes {
17
 
2049 es 18
    /**
19
     * Regista-se o contexto de segurança no monitor e cria-se uma sessão na base de dados
20
     * se não existir
21
     * @param requester
22
     * @return UserSession registada para o Requester
23
     */
24
    @Transaction
25
    public UserSession registerUserSession(1.5.0/docs/api/java/lang/String.html">String requester) {
2018 es 26
 
2049 es 27
        SecurityContextProvider.getInstance().registerSessionContext(requester);
28
        UserSession session;
2018 es 29
        try {
2049 es 30
            session = (UserSession) HibernateUtils.getCurrentSession().get(UserSession.class, requester);
31
            if(session == null)
32
            {
33
                session = new UserSessionImpl();
34
                session.setCookie(requester);
35
                HibernateUtils.getCurrentSession().save(session);
36
            }
37
        }
2018 es 38
        catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
2049 es 39
        {
2018 es 40
 
2049 es 41
            session = new UserSessionImpl();
42
            session.setCookie(requester);
43
            HibernateUtils.getCurrentSession().save(session);
44
        }
45
        session = (UserSession) HibernateUtils.narrow(session);
2018 es 46
        return session;
2049 es 47
    }
2072 es 48
 
49
    @Transaction
50
    public UserSession login(1.5.0/docs/api/java/lang/String.html">String username, 1.5.0/docs/api/java/lang/String.html">String password) throws NotAuthenticatedException {
51
        List<User> users;
52
        UserSession persistente;
53
 
54
        1.5.0/docs/api/java/lang/String.html">String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester();
55
        persistente = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie);
56
 
57
        users = HibernateUtils.getCurrentSession()
58
                .createCriteria(User.class)
59
                .add(eq("username", username))
60
                .add(eq("password", password)).list();
61
 
62
 
63
        if (users==null || users.size()==0)
64
            throw new NotAuthenticatedException("falha de autenticação");
65
 
66
        User u= users.get(0);
67
 
68
        persistente.setUser(u);
69
 
70
        return persistente;
71
    }
72
 
73
    @Transaction
74
    public void logout()  {
75
        List<User> users;
76
        UserSession persistente;
77
 
78
        1.5.0/docs/api/java/lang/String.html">String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester();
79
        persistente = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie);
80
 
81
        persistente.setUser(null);
82
 
83
    }
2018 es 84
}