package org.jboss.seam.security;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import org.apache.deltaspike.core.api.exclude.annotation.Exclude;
import org.jboss.seam.international.status.Messages;
import org.jboss.seam.security.events.AlreadyLoggedInEvent;
import org.jboss.seam.security.events.LoggedInEvent;
import org.jboss.seam.security.events.LoginFailedEvent;
import org.jboss.seam.security.events.NotLoggedInEvent;
import org.jboss.seam.security.events.PostAuthenticateEvent;
import org.jboss.solder.core.Requires;
//import org.jboss.solder.core.Veto;
/**
* Produces system messages in response to certain security events. By default this bean
* is not installed - use Seam Config to install it. If you wish to provide different
* messages, then we recommend that you create your own bean that declares its own security event
* observers.
*
* @author Shane Bryzak
*/
public
@ApplicationScoped @Exclude @Requires("org.jboss.seam.international.status.Messages")
class SecurityEventMessages {
private static final String DEFAULT_LOGIN_FAILED_MESSAGE = "Login failed - please check your username and password before trying again.";
private static final String DEFAULT_LOGIN_SUCCESSFUL_MESSAGE = "Welcome, {0}.";
private static final String DEFAULT_ALREADY_LOGGED_IN_MESSAGE = "You're already logged in. Please log out first if you wish to log in again.";
private static final String DEFAULT_NOT_LOGGED_IN_MESSAGE = "Please log in first.";
public void postAuthenticate(@Observes PostAuthenticateEvent event, Messages messages, Identity identity) {
messages.info(DEFAULT_LOGIN_SUCCESSFUL_MESSAGE, identity.getUser().getId());
}
public void addLoginFailedMessage(@Observes LoginFailedEvent event, Messages messages) {
messages.error(DEFAULT_LOGIN_FAILED_MESSAGE);
}
public void addLoginSuccessMessage(@Observes LoggedInEvent event, Messages messages, Credentials credentials) {
messages.info(DEFAULT_LOGIN_SUCCESSFUL_MESSAGE, credentials.getUsername());
}
public void addAlreadyLoggedInMessage(@Observes AlreadyLoggedInEvent event, Messages messages) {
messages.error(DEFAULT_ALREADY_LOGGED_IN_MESSAGE);
}
public void addNotLoggedInMessage(@Observes NotLoggedInEvent event, Messages messages) {
messages.error(DEFAULT_NOT_LOGGED_IN_MESSAGE);
}
}