Class FormEmailVerificationProcessor

java.lang.Object
sk.iway.iwcm.components.multistep_form.support.FormEmailVerificationProcessor
All Implemented Interfaces:
FormProcessorInterface

@Component public class FormEmailVerificationProcessor extends Object implements FormProcessorInterface
Processor that handles email verification for multi-step forms.

Responsibilities:

  • After step 1, generates a verification code and sends it to the user's email.
  • During step 2, validates the code provided by the user and manages attempt limits.

Session keys are namespaced per form to avoid collisions between multiple forms processed in the same session.

  • Field Details

  • Constructor Details

    • FormEmailVerificationProcessor

      public FormEmailVerificationProcessor()
  • Method Details

    • runStepInterceptor

      public void runStepInterceptor(String formName, FormSettingsEntity formSettings, FormStepEntity stepEntity, org.json.JSONObject stepData, jakarta.servlet.http.HttpServletRequest request, Map<String,String> errors) throws SaveFormException
      Intercepts form processing to trigger email verification after the first step.
      Specified by:
      runStepInterceptor in interface FormProcessorInterface
      Parameters:
      formName - the unique form name
      formSettings - settings already loaded for the current form and domain
      stepEntity - the current form step being processed
      stepData - JSON payload containing fields submitted in the current step
      request - current HTTP request
      errors - map to collect validation errors (not used in this step)
      Throws:
      SaveFormException - if email cannot be determined or email sending fails
    • validateStep

      public void validateStep(String formName, FormSettingsEntity formSettings, FormStepEntity stepEntity, org.json.JSONObject stepData, jakarta.servlet.http.HttpServletRequest request, Map<String,String> errors) throws SaveFormException
      Validates the email verification code during the second step.

      If the code is invalid, the error is placed into the errors map for the corresponding field. If the maximum number of attempts is reached, a SaveFormException is thrown to interrupt the processing and redirect to an error page.

      Specified by:
      validateStep in interface FormProcessorInterface
      Parameters:
      formName - the unique form name
      formSettings - settings already loaded for the current form and domain
      stepEntity - the current form step being validated
      stepData - JSON payload containing fields submitted in the current step
      request - current HTTP request
      errors - map to collect validation errors when the code is invalid
      Throws:
      SaveFormException - when the verification field is missing or the maximum number of attempts is reached
    • handleFormSave

      public boolean handleFormSave(String formName, FormSettingsEntity formSettings, Integer iLastDocId, jakarta.servlet.http.HttpServletRequest request) throws SaveFormException, IOException
      Description copied from interface: FormProcessorInterface
      Performs custom final save logic for the form. The return value controls whether the default WebJET save mechanism is executed.
      Specified by:
      handleFormSave in interface FormProcessorInterface
      Parameters:
      formName - logical identifier of the form
      formSettings - configuration of the form used during saving
      iLastDocId - last document ID (if any) associated with the submission
      request - current HTTP request for context and additional data
      Returns:
      true to continue with the default WebJET save; false to skip it
      Throws:
      SaveFormException - for functional errors during save
      IOException - for I/O related problems that occur during save