package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.common.api.domain.model.authentication.Authentee;
import com.airlock.iam.common.application.authentication.IamSecurityContext;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import com.google.inject.servlet.RequestScoped;
import jakarta.inject.Named;
import jakarta.ws.rs.core.SecurityContext;
import java.util.Optional;

public final class AuthenteeModule extends PrivateModule {
   public static final String AUTHENTEE = "authentee";

   @Provides
   @RequestScoped
   @Named("authentee")
   @Exposed
   Optional<Authentee> provide(SecurityContext securityContext) {
      return IamSecurityContext.extractAuthenteeFromSecurityContext(securityContext);
   }

   public void configure() {
   }
}
