if (!Strings.isNullOrEmpty(credentials.getUsername())) {
log.info("Authenticating: \"" + credentials.getUsername() + "\"");
try {
User u = em.createQuery("from User u join fetch u.contact where u.contact.emailAddress=:username", User.class)
.setParameter("username", credentials.getUsername()).getSingleResult();
if (u != null) {
PasswordCredential password = (PasswordCredential) credentials.getCredential();
String hashedPassword = securityUtil.hash(u, password.getValue());
if (hashedPassword.equals(u.getPassword())) {
loginEvent.fire(u);
u.setDateLastLogin(new Date());
setUser(new SimpleUser(u.getContact().getEmailAddress()));
setStatus(AuthenticationStatus.SUCCESS);
eventLog.fire(new EventLog(u, "User Logged In"));
} else {
messages.info("Incorrect Password");
setStatus(AuthenticationStatus.FAILURE);