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

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.api.domain.model.role.Role;
import com.airlock.iam.common.application.configuration.sso.DefaultSsoTicketRoleExtractorConfig;
import com.airlock.iam.core.misc.util.ticket.Ticket;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.util.Set;

@LogicForConfig(DefaultSsoTicketRoleExtractorConfig.class)
public class DefaultSsoTicketRoleExtractorImpl implements SsoTicketRoleExtractor {
   private final Provider<DefaultSsoTicketRoleExtractorConfig> config;

   @Inject
   public DefaultSsoTicketRoleExtractorImpl(Provider<DefaultSsoTicketRoleExtractorConfig> config) {
      this.config = config;
   }

   @Override
   public Set<Role> extract(Ticket ticket) {
      return SsoTicketKeyRoleExtractor.fromTicketKeys(((DefaultSsoTicketRoleExtractorConfig)this.config.get()).getTicketKeys()).extract(ticket);
   }
}
