/// <summary> /// Parse the parameter and returns a list of prompt parameter. /// </summary> /// <param name="parameter">List of prompts separated by whitespace</param> /// <returns>List of prompts.</returns> public static ICollection <string> ParsePrompts(this string?parameter) { if (string.IsNullOrWhiteSpace(parameter)) { return(new List <string>()); } var promptNames = PromptParameters.All(); //Enum.GetNames(typeof(PromptParameter)); var prompts = parameter.Split(' ') .Where(c => !string.IsNullOrWhiteSpace(c) && promptNames.Contains(c)) .ToList(); return(prompts); }
/// <summary> /// Validate the prompt parameter. /// </summary> /// <param name="prompt"></param> /// <param name="state"></param> private Option ValidatePromptParameter(string?prompt, string?state) { if (string.IsNullOrWhiteSpace(prompt)) { return(new Option.Success()); } var promptNames = PromptParameters.All(); //Enum.GetNames(typeof(PromptParameter)); var atLeastOnePromptIsNotSupported = prompt.Split(' ') .Any(r => !string.IsNullOrWhiteSpace(r) && !promptNames.Contains(r)); if (atLeastOnePromptIsNotSupported) { var message = Strings.AtLeastOnePromptIsNotSupported; _logger.LogError(message); return(new Option.Error( new ErrorDetails { Title = ErrorCodes.InvalidRequest, Detail = message, Status = HttpStatusCode.BadRequest }, state)); } var prompts = prompt.ParsePrompts(); if (prompts.Contains(PromptParameters.None) && (prompts.Contains(PromptParameters.Login) || prompts.Contains(PromptParameters.Consent) || prompts.Contains(PromptParameters.SelectAccount))) { var message = Strings.PromptParameterShouldHaveOnlyNoneValue; _logger.LogError(message); return(new Option.Error( new ErrorDetails { Title = ErrorCodes.InvalidRequest, Detail = message, Status = HttpStatusCode.BadRequest }, state)); } return(new Option.Success()); }