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);
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()) {
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) {
KeycloakSessionFactory getKeycloakSessionFactory()
KeycloakSession getSession()
Definition: AuthenticationProcessor.java:156
AuthenticationSessionModel getAuthenticationSession()
Definition: AuthenticationProcessor.java:144
String getAuthenticator()
Definition: AuthenticationExecutionModel.java:63
UserModel getAuthenticatedUser()
void setExecutionStatus(String authenticator, ExecutionStatus status)
AuthenticationExecutionModel formExecution
Definition: FormAuthenticationFlow.java:53
RealmModel getRealm()
Definition: AuthenticationProcessor.java:128
Response renderForm(MultivaluedMap< String, String > formData, List< FormMessage > errors)
Definition: FormAuthenticationFlow.java:282
AuthenticationProcessor processor
Definition: FormAuthenticationFlow.java:52
String getId()
Definition: AuthenticationExecutionModel.java:47
final List< AuthenticationExecutionModel > formActionExecutions
Definition: FormAuthenticationFlow.java:54
< T extends Provider > ProviderFactory< T > getProviderFactory(Class< T > clazz)
void logFailure()
Definition: AuthenticationProcessor.java:619
void removeAuthNote(String name)