package com.airlock.iam.flow.shared.application.configuration.airlock2fa;

import com.airlock.iam.plugin.api.config.ConfigurationContext;
import com.airlock.iam.plugin.api.config.ConfigurationEnvironment;
import com.airlock.iam.plugin.api.config.PluginConfiguration;
import com.airlock.iam.plugin.api.exception.ConfigurationException;
import com.airlock.iam.plugin.api.exception.PropertyConstraintViolationException;
import com.airlock.iam.plugin.api.valuereader.BooleanPropertyValueReader;

public interface GenericAirlock2FAActivationStepConfig {
   String ACTIVATION_CODE_SHORT_FIELD_NAME = "provideActivationCodeShort";
   String ACTIVATION_CODE_SHORT_DISPLAY_NAME = "Provide Short Activation Code";

   static void validateShortLivedSettingsProhibitActivationCodeShort(
      PluginConfiguration currentConfig, ConfigurationEnvironment env, ConfigurationContext context
   ) throws ConfigurationException {
      boolean shortLivedQrCodesToggle = BooleanPropertyValueReader.effectiveBooleanPropertyValue(currentConfig, "enableShortLivedOnlineQrCodes", env, context);
      boolean activationCodeShortToggle = BooleanPropertyValueReader.effectiveBooleanPropertyValue(currentConfig, "provideActivationCodeShort", env, context);
      if (shortLivedQrCodesToggle && activationCodeShortToggle) {
         throw new PropertyConstraintViolationException(
            "provideActivationCodeShort",
            currentConfig,
            env,
            context,
            "Short-lived Online QR Codes cannot be combined with the option \"Provide Short Activation Code\"."
         );
      }
   }
}
