package gov.samhsa.consent2share.infrastructure.eventlistener;
import gov.samhsa.consent2share.common.UserContext;
import gov.samhsa.consent2share.infrastructure.securityevent.UnauthorizedAccessAttemptedEvent;
import org.springframework.security.access.event.AuthorizationFailureEvent;
import org.springframework.security.web.authentication.WebAuthenticationDetails;
/**
* The listener interface for receiving authorizationFailureEvent events. The
* class that is interested in processing a authorizationFailureEvent event
* implements this interface, and the object created with that class is
* registered with a component using the component's
* <code>addAuthorizationFailureEventListener<code> method. When
* the authorizationFailureEvent event occurs, that object's appropriate
* method is invoked.
*
* @see AuthorizationFailureEventEvent
*/
public class AuthorizationFailureEventListener extends EventListener {
/** The user context. */
UserContext userContext;
/**
* Instantiates a new authorization failure event listener.
*
* @param eventService
* the event service
* @param userContext
* the user context
*/
public AuthorizationFailureEventListener(EventService eventService,
UserContext userContext) {
super(eventService);
this.userContext = userContext;
}
/*
* (non-Javadoc)
*
* @see
* gov.samhsa.consent2share.infrastructure.eventlistener.EventListener#canHandle
* (java.lang.Object)
*/
@Override
public boolean canHandle(Object event) {
return event instanceof AuthorizationFailureEvent;
}
/*
* (non-Javadoc)
*
* @see
* gov.samhsa.consent2share.infrastructure.eventlistener.EventListener#handle
* (java.lang.Object)
*/
@Override
public void handle(Object event) {
WebAuthenticationDetails details = (WebAuthenticationDetails) ((AuthorizationFailureEvent) event)
.getAuthentication().getDetails();
eventService.raiseSecurityEvent(new UnauthorizedAccessAttemptedEvent(
details.getRemoteAddress(), userContext.getCurrentUser()
.getUsername()));
}
}