package com.airlock.iam.authentication.infrastructure.factory;

import com.airlock.iam.authentication.application.configuration.targetapp.TargetApplicationsConfig;
import com.airlock.iam.common.domain.model.principal.MaxFailedAttempts;
import com.airlock.iam.common.domain.model.principal.MaxFailedAttemptsImpl;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import java.util.Optional;

public final class AuthenticationMaxFailedLoginsModule extends PrivateModule {
   @Provides
   int provideMaxFailedLogins(Optional<TargetApplicationsConfig> authenticationConfig) {
      return authenticationConfig.orElseThrow().getMaxFailedLogins();
   }

   protected void configure() {
      this.bind(MaxFailedAttempts.class).to(MaxFailedAttemptsImpl.class);
      this.expose(MaxFailedAttempts.class);
   }
}
