package org.jboss.seam.security.examples.id_provider;
import java.io.Serializable;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletResponse;
import org.jboss.seam.security.external.saml.api.SamlIdentityProviderApi;
import org.jboss.seam.security.external.saml.api.SamlIdpSession;
@Named
public class SamlIdentity implements Serializable {
private static final long serialVersionUID = 3739296115750412807L;
@Inject
private SamlIdentityProviderApi samlIdp;
public void localLogin(String userName) {
samlIdp.localLogin(samlIdp.createNameId(userName, null, null), null);
}
public void remoteLogin(String spEntityId) {
samlIdp.remoteLogin(spEntityId, null, (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse());
}
public void localLogout() {
samlIdp.localLogout();
}
public void globalLogout() {
samlIdp.globalLogout((HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse());
}
public boolean isLoggedIn() {
return samlIdp.getSession() != null;
}
public void redirectToLoginIfNotLoggedIn() {
if (!isLoggedIn()) {
redirectToViewId("/Login.xhtml");
}
}
public SamlIdpSession getSamlIdpSession() {
return samlIdp.getSession();
}
private void redirectToViewId(String viewId) {
FacesContext facesContext = FacesContext.getCurrentInstance();
FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(facesContext, null, viewId + "?faces-redirect=true");
}
}