package org.jboss.seam.security.examples.id_consumer;
import java.io.IOException;
import javax.inject.Inject;
import javax.servlet.ServletContext;
import org.jboss.solder.logging.Logger;
import org.jboss.seam.security.external.api.ResponseHolder;
import org.jboss.seam.security.external.saml.api.SamlServiceProviderApi;
import org.jboss.seam.security.external.saml.api.SamlSpSession;
import org.jboss.seam.security.external.spi.SamlServiceProviderSpi;
public class SamlServiceProviderSpiImpl implements SamlServiceProviderSpi {
@Inject
SamlServiceProviderApi samlServiceProviderApi;
@Inject
private Logger log;
@Inject
private ServletContext servletContext;
public void loginSucceeded(SamlSpSession session, ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/UserInfo.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void loginFailed(String statusCodeLevel1, String statusCodeLevel2, ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/AuthenticationFailed.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void globalLogoutFailed(String statusCodeLevel1, String statusCodeLevel2, ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/GlobalLogoutFailed.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void globalLogoutSucceeded(ResponseHolder responseHolder) {
try {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/Login.jsf");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void loggedIn(SamlSpSession session, String url, ResponseHolder responseHolder) {
try {
if (url != null) {
responseHolder.getResponse().sendRedirect(url);
} else {
responseHolder.getResponse().sendRedirect(servletContext.getContextPath() + "/UserInfo.jsf");
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void loggedOut(SamlSpSession session) {
log.info("User " + session.getPrincipal().getNameId() + " has been logged out.");
}
}