175             throw new AuthenticationFlowException(
"action is not current execution", AuthenticationFlowError.INTERNAL_ERROR);
   177         Map<String, AuthenticationSessionModel.ExecutionStatus> executionStatus = 
new HashMap<>();
   178         List<FormAction> requiredActions = 
new LinkedList<>();
   179         List<ValidationContextImpl> successes = 
new LinkedList<>();
   180         List<ValidationContextImpl> errors = 
new LinkedList<>();
   182             if (!formActionExecution.isEnabled()) {
   183                 executionStatus.put(formActionExecution.getId(), AuthenticationSessionModel.ExecutionStatus.SKIPPED);
   186             FormActionFactory factory = (FormActionFactory)
processor.
getSession().getKeycloakSessionFactory().getProviderFactory(FormAction.class, formActionExecution.getAuthenticator());
   190             if (action.requiresUser() && authUser == null) {
   191                 throw new AuthenticationFlowException(
"form action: " + 
formExecution.getAuthenticator() + 
" requires user", AuthenticationFlowError.UNKNOWN_USER);
   193             boolean configuredFor = 
false;
   194             if (action.requiresUser() && authUser != null) {
   196                 if (!configuredFor) {
   197                     if (formActionExecution.isRequired()) {
   198                         if (factory.isUserSetupAllowed()) {
   199                             AuthenticationProcessor.logger.debugv(
"authenticator SETUP_REQUIRED: {0}", 
formExecution.getAuthenticator());
   200                             executionStatus.put(formActionExecution.getId(), AuthenticationSessionModel.ExecutionStatus.SETUP_REQUIRED);
   201                             requiredActions.add(action);
   204                             throw new AuthenticationFlowException(AuthenticationFlowError.CREDENTIAL_SETUP_REQUIRED);
   206                     } 
else if (formActionExecution.isOptional()) {
   207                         executionStatus.put(formActionExecution.getId(), AuthenticationSessionModel.ExecutionStatus.SKIPPED);
   213             ValidationContextImpl result = 
new ValidationContextImpl(formActionExecution, action);
   214             action.validate(result);
   215             if (result.success) {
   216                 executionStatus.put(formActionExecution.getId(), AuthenticationSessionModel.ExecutionStatus.SUCCESS);
   217                 successes.add(result);
   219                 executionStatus.put(formActionExecution.getId(), AuthenticationSessionModel.ExecutionStatus.CHALLENGED);
   224         if (!errors.isEmpty()) {
   226             List<FormMessage> messages = 
new LinkedList<>();
   227             Set<String> fields = 
new HashSet<>();
   228             for (ValidationContextImpl v : errors) {
   229                 for (FormMessage m : v.errors) {
   230                     if (!fields.contains(m.getField())) {
   231                         if (v.excludeOthers) {
   236                         fields.add(m.getField());
   239                         if (v.excludeOthers) {
   245             ValidationContextImpl first = errors.get(0);
   246             first.getEvent().error(first.error);
   250         for (ValidationContextImpl context : successes) {
   251             context.action.success(context);
   254         for (Map.Entry<String, AuthenticationSessionModel.ExecutionStatus> entry : executionStatus.entrySet()) {
   257         for (FormAction action : requiredActions) {
 KeycloakSession getSession()
Definition: AuthenticationProcessor.java:156
 
AuthenticationExecutionModel formExecution
Definition: FormAuthenticationFlow.java:53
 
void logFailure()
Definition: AuthenticationProcessor.java:619
 
AuthenticationSessionModel getAuthenticationSession()
Definition: AuthenticationProcessor.java:144
 
Response renderForm(MultivaluedMap< String, String > formData, List< FormMessage > errors)
Definition: FormAuthenticationFlow.java:282
 
final List< AuthenticationExecutionModel > formActionExecutions
Definition: FormAuthenticationFlow.java:54
 
AuthenticationProcessor processor
Definition: FormAuthenticationFlow.java:52
 
RealmModel getRealm()
Definition: AuthenticationProcessor.java:128