/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.model.common; import java.util.ArrayList; import java.util.List; /** * An ASCII string values that specifies whether the Authorization Server * prompts the End-User for re-authentication and consent. * * @author Javier Rojas Blum Date: 02.10.2012 */ public enum Prompt implements HasParamName { /** * The Authorization Server MUST NOT display any authentication or * consent user interface pages. An error is returned if the End-User * is not already authenticated or the Client does not have pre-configured * consent for the requested scopes. This can be used as a method to * check for existing authentication and/or consent. */ NONE("none"), /** * The Authorization Server MUST prompt the End-User for re-authentication */ LOGIN("login"), /** * The Authorization Server MUST prompt the End-User for consent before * returning information to the Client. */ CONSENT("consent"), /** * The Authorization Server MUST prompt the End-User to select a user account. * This allows a user who has multiple accounts at the Authorization Server to * select amongst the multiple accounts that they may have current sessions for. */ SELECT_ACCOUNT("select_account"); private final String paramName; private Prompt(String paramName) { this.paramName = paramName; } /** * Returns the corresponding {@link Prompt} for a parameter * prompt of the authorization endpoint. * * @param param The parameter. * @return The corresponding response type if found, otherwise <code>null</code>. */ public static Prompt fromString(String param) { if (param != null) { for (Prompt rt : Prompt.values()) { if (param.equals(rt.paramName)) { return rt; } } } return null; } /** * Gets param name. * * @return param name */ public String getParamName() { return paramName; } /** * Returns a list of the corresponding {@link Prompt} from a space-separated * list of prompt parameters. * * @param paramList A space-separated list of prompt parameters. * @param separator The separator of the string list. * @return A list of the recognized response types. */ public static List<Prompt> fromString(String paramList, String separator) { List<Prompt> prompts = new ArrayList<Prompt>(); if (paramList != null && !paramList.isEmpty()) { String[] params = paramList.split(separator); for (String param : params) { for (Prompt p : Prompt.values()) { if (param.equals(p.paramName)) { if (!prompts.contains(p)) { prompts.add(p); } } } } } return prompts; } /** * Returns a string representation of the object. In this case the parameter name. */ @Override public String toString() { return paramName; } }