package com.airlock.iam.login.rest.infrastructure.logger;

import com.airlock.iam.base.api.domain.model.user.UserId;
import com.airlock.iam.common.domain.model.user.PrincipalInfo;
import com.airlock.iam.log.api.helpdesk.HelpdeskLogger;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

public final class ProtectedRestHelpdeskLogger implements ProtectedHelpdeskLogger {
   private final Provider<PrincipalInfo> principalInfo;
   private final HelpdeskLogger logger;

   @Inject
   public ProtectedRestHelpdeskLogger(Provider<PrincipalInfo> principalInfo, HelpdeskLogger logger) {
      this.principalInfo = principalInfo;
      this.logger = logger;
   }

   @Override
   public void log(String message, Object... args) {
      this.logger.log(this.userId().getValue(), message, args);
   }

   private UserId userId() {
      return ((PrincipalInfo)this.principalInfo.get()).tryGetAuthenticatedIdentity().id();
   }
}
