Package org.fao.geonet.kernel.security.listener

Source Code of org.fao.geonet.kernel.security.listener.UpdateTimestampListener

package org.fao.geonet.kernel.security.listener;


import org.fao.geonet.domain.ISODate;
import org.fao.geonet.domain.User;
import org.fao.geonet.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.security.authentication.event.InteractiveAuthenticationSuccessEvent;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.switchuser.AuthenticationSwitchUserEvent;

/**
*
* This class logs the last succesful login events from the app.
*
* Can be de/activated adding config-security-core(-overrides).xml
*
* <bean class="org.fao.geonet.kernel.security.listener.UpdateTimestampListener"
* id="updateTimestampListener"> <property name="activate" value="true"/> </bean>
*
*
* @author delawen
* @author Jose García
*
*/
public class UpdateTimestampListener implements ApplicationListener<ApplicationEvent> {


    @Autowired
    private UserRepository _userRepository;

    @Override
    /**
     * Depending on which type of app event we will log one or other thing.
     */
    public void onApplicationEvent(ApplicationEvent ev) {

        if (ev instanceof AbstractAuthenticationEvent) {
            AbstractAuthenticationEvent e = (AbstractAuthenticationEvent) ev;

            if (e instanceof InteractiveAuthenticationSuccessEvent
                    || e instanceof AuthenticationSuccessEvent
                    || e instanceof AuthenticationSwitchUserEvent) {

                try {
                    UserDetails userDetails = (UserDetails) e
                            .getAuthentication().getPrincipal();

                    User user = _userRepository.findOneByUsername(userDetails.getUsername());
                    user.setLastLoginDate(new ISODate().toString());
                    _userRepository.save(user);

                } catch (Exception ex) {
                    // TODO: Log exception
                    ex.printStackTrace();
                }

            }
        }
    }
}
TOP

Related Classes of org.fao.geonet.kernel.security.listener.UpdateTimestampListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.