package com.airlock.iam.common.application.service;

import com.airlock.iam.common.application.service.session.AirlockControlCookieService;
import com.airlock.iam.common.application.service.session.SessionTerminationService;
import com.airlock.iam.common.domain.service.SessionService;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

public class DefaultSessionTerminationService implements SessionTerminationService {
   private final Provider<AirlockControlCookieService> controlCookieService;
   private final Provider<SessionService> sessionService;

   @Inject
   public DefaultSessionTerminationService(Provider<AirlockControlCookieService> controlCookieService, Provider<SessionService> sessionService) {
      this.controlCookieService = controlCookieService;
      this.sessionService = sessionService;
   }

   @Override
   public void terminateSessions() {
      ((AirlockControlCookieService)this.controlCookieService.get()).terminateAirlockSession();
      ((SessionService)this.sessionService.get()).terminateSessionAtEndOfRestRequest();
   }

   @Override
   public void terminateSessionsUsingClear() {
      ((AirlockControlCookieService)this.controlCookieService.get()).clearAirlockSession();
      ((SessionService)this.sessionService.get()).terminateSessionAtEndOfRestRequest();
   }

   public void terminateOnlyIamSession() {
      ((SessionService)this.sessionService.get()).terminateSessionAtEndOfRestRequest();
   }
}
