What is the correct way to update an entity in my authenticate method (called from
Identity)? I want to update the user entity with a 'last connected' date. As far
as I can tell, I have to handle the transaction manually, like this:
@Name("authenticator")
| public class Authenticator {
|
| @In
| EntityManager entityManager;
|
| @Out(scope=ScopeType.SESSION, required=false)
| SiteUser currentUser;
|
| @In(create=true) @Out
| SessionPreferences prefs;
|
| public boolean authenticate() {
| Query q = entityManager.createQuery("from SiteUser su where upper(username) =
upper(:username) and password = :password and active = true");
| q.setParameter("username", Identity.instance().getUsername());
| q.setParameter("password", Identity.instance().getPassword());
| if (q.getResultList().size() == 1) {
| currentUser = (SiteUser)q.getSingleResult();
| prefs.setCurrentOrganization(currentUser.getOrganization());
| Identity.instance().addRole("admin");
|
| try {
| UserTransaction utx = Transactions.getUserTransaction();
| utx.begin();
| entityManager.joinTransaction();
| currentUser.setLastConnected(new java.util.Date());
| utx.commit();
| } catch (Exception e) {
| log.error("Exception updating user: " + e.getMessage());
| }
|
| return true;
| }
| return false;
| }
| }
Is there a better way to do it?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4039359#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...