package gov.samhsa.consent2share.infrastructure.eventlistener; import gov.samhsa.consent2share.domain.account.Users; import gov.samhsa.consent2share.domain.account.UsersRepository; import org.springframework.security.authentication.event.AuthenticationSuccessEvent; /** * The listener interface for receiving loginSuccessEvent events. The class that * is interested in processing a loginSuccessEvent event implements this * interface, and the object created with that class is registered with a * component using the component's * <code>addLoginSuccessEventListener<code> method. When * the loginSuccessEvent event occurs, that object's appropriate * method is invoked. * * @see LoginSuccessEventEvent */ public class LoginSuccessEventListener extends EventListener { /** The users repository. */ UsersRepository usersRepository; /** * Instantiates a new login success event listener. * * @param eventService * the event service * @param usersRepository * the users repository */ public LoginSuccessEventListener(EventService eventService, UsersRepository usersRepository) { super(eventService); this.usersRepository = usersRepository; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.infrastructure.eventlistener.EventListener#canHandle * (java.lang.Object) */ @Override public boolean canHandle(Object event) { return event instanceof AuthenticationSuccessEvent; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.infrastructure.eventlistener.EventListener#handle * (java.lang.Object) */ @Override public void handle(Object event) { AuthenticationSuccessEvent loginSuccessEvent = (AuthenticationSuccessEvent) event; Object name = loginSuccessEvent.getAuthentication().getPrincipal(); if (name != null) { Users user = (Users) name; user.setFailedLoginAttemptsToZero(); usersRepository.updateUser(user); } } }