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 | } |