package org.jboss.seam.security.examples.id_provider;
import javax.enterprise.inject.Model;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletResponse;
import org.jboss.seam.security.external.dialogues.api.DialogueManager;
import org.jboss.seam.security.external.saml.api.SamlIdentityProviderApi;
@Model
public class Login {
@Inject
private SamlIdentityProviderApi samlIdentityProviderApi;
private String userName;
private String dialogueId;
@Inject
private DialogueManager dialogueManager;
@Inject
private SamlIdentity identity;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getDialogueId() {
return dialogueId;
}
public void setDialogueId(String dialogueId) {
this.dialogueId = dialogueId;
}
public String login() {
identity.localLogin(userName);
if (dialogueId != null) {
dialogueManager.attachDialogue(dialogueId);
samlIdentityProviderApi.authenticationSucceeded((HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse());
dialogueManager.detachDialogue();
return "SAML_LOGIN";
} else {
return "LOCAL_LOGIN";
}
}
public void cancel() {
if (dialogueId != null) {
dialogueManager.attachDialogue(dialogueId);
samlIdentityProviderApi.authenticationFailed((HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse());
dialogueManager.detachDialogue();
} else {
throw new IllegalStateException("cancel method can only be called during a SAML login");
}
}
}