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

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.oauth2.application.configuration.OAuth2CodeGrantInProgressConditionConfig;
import com.airlock.iam.oauth2.domain.model.codegrant.OAuth2AuthorizationCodeGrantFlowSessionAttribute;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

@LogicForConfig(OAuth2CodeGrantInProgressConditionConfig.class)
public class OAuth2CodeGrantInProgressCondition implements FlowCondition {
   private final Provider<FlowAttributeService> attributes;

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

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

   @Override
   public String displayName() {
      return "OAuth 2.0 Code Grant in Progress";
   }
}
