package com.airlock.iam.saml2.domain.model.sp.step;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.flow.api.domain.model.step.FlowCondition;
import com.airlock.iam.flow.shared.api.domain.service.FlowAttributeService;
import com.airlock.iam.saml2.application.configuration.sp.Saml2IdpInitiatedSsoConditionConfig;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

@LogicForConfig(Saml2IdpInitiatedSsoConditionConfig.class)
public final class Saml2IdpInitiatedSsoCondition implements FlowCondition {
   public static final String SAML2_IDP_INITIATED_SSO_CONDITION_DISPLAY_NAME = "IdP-Initiated SSO Flow On SP";
   private final Provider<FlowAttributeService> attributes;

   @Inject
   public Saml2IdpInitiatedSsoCondition(Provider<FlowAttributeService> attributes) {
      this.attributes = attributes;
   }

   @Override
   public boolean isFulfilled() {
      return ((FlowAttributeService)this.attributes.get()).findAttribute(Saml2IdpInitiatedSsoFlowAttribute.class).isPresent();
   }

   @Override
   public String displayName() {
      return "IdP-Initiated SSO Flow On SP";
   }
}
