package de.flower.rmt.service.security;
import de.flower.rmt.security.UserDetailsBean;
import de.flower.rmt.service.IUserManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.InteractiveAuthenticationSuccessEvent;
/**
* Spring security application listener to track last login of users.
* @author flowerrrr
*/
public class ApplicationSecurityListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
private final static Logger log = LoggerFactory.getLogger(ApplicationSecurityListener.class);
@Autowired
private IUserManager userManager;
@Override
public void onApplicationEvent(final InteractiveAuthenticationSuccessEvent event) {
log.info(event.toString());
try {
UserDetailsBean userDetailsBean = (UserDetailsBean) event.getAuthentication().getPrincipal();
userManager.onLoginSuccess(userDetailsBean.getUser());
} catch (RuntimeException e) {
log.error(e.getMessage(), e);
}
// source = RememberMeAuthenticationToken
// source = UsernamePasswordAuthToken
// both principal UserDetailsBean
}
}