package com.airlock.iam.publicselfservice.infrastructure.factory.shared;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.common.domain.model.token.secretquestions.SecretQuestionsRepository;
import com.airlock.iam.publicselfservice.application.configuration.restrictions.DisabledOrMissingSecretQuestionsRestrictionConfig;
import com.airlock.iam.publicselfservice.domain.model.restrictions.DisabledOrMissingSecretQuestionsRestrictionSettings;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

@ModuleForConfig(DisabledOrMissingSecretQuestionsRestrictionConfig.class)
public class DisabledOrMissingSecretQuestionsRestrictionModule extends PrivateModule {
   @Exposed
   @Provides
   DisabledOrMissingSecretQuestionsRestrictionSettings provideDisabledOrMissingSecretQuestionsRestrictionSettings(
      DisabledOrMissingSecretQuestionsRestrictionConfig config
   ) {
      return new DisabledOrMissingSecretQuestionsRestrictionSettings(config.getSecretQuestionsSettings().getRequiredNumberOfProvisionedAnswers());
   }

   @Exposed
   @Provides
   SecretQuestionsRepository provideSecretQuestionsRepository(DisabledOrMissingSecretQuestionsRestrictionConfig config) {
      return new SecretQuestionsRepository(config.getSecretQuestionsSettings());
   }

   protected void configure() {
   }
}
