package com.airlock.iam.authentication.domain.model.airlock2fa;

import com.airlock.iam.authentication.application.configuration.airlock2fa.Airlock2FALoginIdValueMapProviderConfig;
import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.flow.shared.api.domain.model.valueprovider.ValueMapProvider;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;

@LogicForConfig(Airlock2FALoginIdValueMapProviderConfig.class)
public final class Airlock2FALoginIdValueMapProvider implements ValueMapProvider {
   private final Provider<Optional<Airlock2FAAuthenticationStepSession>> stepSession;

   @Inject
   public Airlock2FALoginIdValueMapProvider(Provider<Optional<Airlock2FAAuthenticationStepSession>> stepSession) {
      this.stepSession = stepSession;
   }

   @Override
   public Map<String, Object> provideValueMap() {
      return ((Optional)this.stepSession.get())
         .flatMap(Airlock2FAAuthenticationStepSession::getLoginId)
         .map(loginId -> Map.of("loginId", loginId))
         .orElseGet(Collections::emptyMap);
   }
}
