diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs new file mode 100644 index 0000000000..8b1889280f --- /dev/null +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/IOrganizationPolicyRequirementQuery.cs @@ -0,0 +1,19 @@ +#nullable enable + +using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements; + +namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies; + +/// +/// Query interface for retrieving policy requirements based on organization ID +/// +public interface IOrganizationPolicyRequirementQuery +{ + /// + /// Gets a policy requirement of type T for an organization + /// + /// The type of policy requirement to retrieve + /// The organization ID to get policy requirements for + /// The policy requirement of type T + Task GetAsync(Guid organizationId) where T : IPolicyRequirement; +} diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs new file mode 100644 index 0000000000..d9ca24f6b2 --- /dev/null +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyRequirements/IOrganizationPolicyRequirementFactory.cs @@ -0,0 +1,24 @@ +#nullable enable + +using Bit.Core.AdminConsole.Entities; +using Bit.Core.AdminConsole.Enums; + +namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements; + +/// +/// An interface that defines how to create a single from a Policy. +/// +/// The that the factory produces. +public interface IOrganizationPolicyRequirementFactory where T : IPolicyRequirement +{ + /// + /// The that the requirement relates to. + /// + PolicyType PolicyType { get; } + + /// + /// A reducer method that creates a from a Policy. + /// + /// The policy for the specified PolicyType. + T Create(Policy? policy); +}