package org.freezo.admin.service; import java.util.Date; import org.freezo.domain.Account; import org.freezo.domain.AccountRepository; import org.freezo.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; public class SuccessfulAuthHandler implements ApplicationListener<AuthenticationSuccessEvent> { @Autowired private AccountRepository repository; @Override @Transactional public void onApplicationEvent(final AuthenticationSuccessEvent event) { final Account account = ((User) event.getAuthentication().getPrincipal()).getAccount(); account.setFailedAuthCounter(0); account.setLastSuccessAuth(new Date()); account.setLastSuccessAuthIp(currentRequestRemoteAddr()); repository.save(account); } private String currentRequestRemoteAddr() { return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) .getRequest().getRemoteAddr(); } }