package com.airlock.iam.oauth2.domain.model.claims.conditions;

import com.airlock.iam.oauth2.api.domain.model.OAuth2Scope;
import com.airlock.iam.oauth2.api.domain.model.claims.conditions.ClaimCondition;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Set;
import lombok.NonNull;

public final class RequiredScopesClaimCondition implements ClaimCondition {
   @NonNull
   private final Set<OAuth2Scope> requiredScopes;

   @Override
   public boolean isSatisfied(Set<OAuth2Scope> issuedTokenScope) {
      return issuedTokenScope.containsAll(this.requiredScopes);
   }

   @SuppressFBWarnings(justification = "generated code")
   public RequiredScopesClaimCondition(@NonNull Set<OAuth2Scope> requiredScopes) {
      if (requiredScopes == null) {
         throw new NullPointerException("requiredScopes is marked non-null but is null");
      }

      this.requiredScopes = requiredScopes;
   }
}
