package com.airlock.iam.oauth2.domain.model.sso;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.domain.model.sso.SsoTicketExtractor;
import com.airlock.iam.flow.api.domain.model.session.FlowAttributeRepository;
import com.airlock.iam.oauth2.application.configuration.sso.OpenIdConnectSsoTicketLoginHintExtractorConfig;
import com.airlock.iam.oauth2.domain.model.authentication.OpenIdConnectSsoTicketLoginHintFlowAttribute;
import jakarta.inject.Inject;
import java.util.Optional;

@LogicForConfig(OpenIdConnectSsoTicketLoginHintExtractorConfig.class)
public final class OpenIdConnectSsoTicketLoginHintExtractor implements SsoTicketExtractor {
   private final FlowAttributeRepository repository;

   @Inject
   public OpenIdConnectSsoTicketLoginHintExtractor(FlowAttributeRepository repository) {
      this.repository = repository;
   }

   @Override
   public Optional<String> extract() {
      return this.repository.tryGetAttribute(OpenIdConnectSsoTicketLoginHintFlowAttribute.class).map(loginHint -> loginHint.getLoginHint().getLoginHint());
   }
}
