package com.airlock.iam.admin.infrastructure.factory.prot;

import com.airlock.iam.admin.application.configuration.password.PasswordTokenController;
import com.airlock.iam.admin.domain.model.token.TokenController;
import com.airlock.iam.core.application.configuration.password.AdminappPasswordResetConfig;
import com.airlock.iam.core.domain.service.password.AdminappPasswordResetService;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import com.google.inject.servlet.RequestScoped;
import java.util.Optional;

public final class EmailPwdSelfServiceModule extends PrivateModule {
   @RequestScoped
   @Provides
   @Exposed
   Optional<AdminappPasswordResetService> provide(TokenController.TokenControllers tokenControllers) {
      Optional<PasswordTokenController> password = tokenControllers.ofId("PASSWORD");
      return password.flatMap(PasswordTokenController::getPasswordResetSelfService).map(AdminappPasswordResetConfig::getService);
   }

   protected void configure() {
   }
}
