#nullable enable using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements; namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies; public interface IPolicyRequirementQuery { /// /// Get a policy requirement for a specific user. /// The policy requirement represents how one or more policy types should be enforced against the user. /// It will always return a value even if there are no policies that should be enforced. /// This should be used for all policy checks. /// /// The user that you need to enforce the policy against. /// The IPolicyRequirement that corresponds to the policy you want to enforce. Task GetAsync(Guid userId) where T : IPolicyRequirement; /// /// Get a policy requirement for a specific organization. /// This returns the policy requirement that represents the policy state for the entire organization. /// It will always return a value even if there are no policies that should be enforced. /// This should be used for organization-level policy checks. /// /// The organization to check policies for. /// The IPolicyRequirement that corresponds to the policy you want to enforce. Task GetByOrganizationAsync(Guid organizationId) where T : IPolicyRequirement; }