From 8dd13a3697bca0eac9e7140b1b876546ad23eb9e Mon Sep 17 00:00:00 2001 From: sven-bitwarden Date: Wed, 14 Jan 2026 16:33:00 -0600 Subject: [PATCH] Add xml doc, incorporate shim data model --- .../Data/Organizations/Policies/PolicyData.cs | 17 +++++++++++++++++ .../Policies/IPolicyQuery.cs | 11 ++++++++++- .../Policies/Implementations/PolicyQuery.cs | 15 ++++++++++++--- 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/Core/AdminConsole/Models/Data/Organizations/Policies/PolicyData.cs diff --git a/src/Core/AdminConsole/Models/Data/Organizations/Policies/PolicyData.cs b/src/Core/AdminConsole/Models/Data/Organizations/Policies/PolicyData.cs new file mode 100644 index 0000000000..00fd744b07 --- /dev/null +++ b/src/Core/AdminConsole/Models/Data/Organizations/Policies/PolicyData.cs @@ -0,0 +1,17 @@ +using Bit.Core.AdminConsole.Enums; +using Bit.Core.Utilities; + +namespace Bit.Core.AdminConsole.Models.Data.Organizations.Policies; + +public class PolicyData +{ + public Guid OrganizationId { get; init; } + public PolicyType Type { get; init; } + public bool Enabled { get; init; } + public string? Data { get; init; } + + public T GetDataModel() where T : IPolicyDataModel, new() + { + return CoreHelpers.LoadClassFromJsonData(Data); + } +} diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/IPolicyQuery.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/IPolicyQuery.cs index 1f4f510259..ff0a8a83e6 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/Policies/IPolicyQuery.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/IPolicyQuery.cs @@ -1,9 +1,18 @@ using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Enums; +using Bit.Core.AdminConsole.Models.Data.Organizations.Policies; namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies; public interface IPolicyQuery { - Task GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType policyType); + /// + /// Retrieves a summary view of an organization's usage of a policy specified by the . + /// + /// + /// This query is the entrypoint for consumers interested in understanding how a particular + /// has been applied to an organization; the resultant is not indicative of explicit + /// policy configuration. + /// + Task RunAsync(Guid organizationId, PolicyType policyType); } diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/Implementations/PolicyQuery.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/Implementations/PolicyQuery.cs index c7afc7af8b..033f30ef05 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/Policies/Implementations/PolicyQuery.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/Implementations/PolicyQuery.cs @@ -1,12 +1,21 @@ using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Enums; +using Bit.Core.AdminConsole.Models.Data.Organizations.Policies; using Bit.Core.AdminConsole.Repositories; namespace Bit.Core.AdminConsole.OrganizationFeatures.Policies.Implementations; public class PolicyQuery(IPolicyRepository policyRepository) : IPolicyQuery { - public async Task GetByOrganizationIdTypeAsync(Guid organizationId, PolicyType policyType) - => await policyRepository.GetByOrganizationIdTypeAsync(organizationId, policyType) - ?? new Policy { OrganizationId = organizationId, Type = policyType }; + public async Task RunAsync(Guid organizationId, PolicyType policyType) + { + var dbPolicy = await policyRepository.GetByOrganizationIdTypeAsync(organizationId, policyType); + return new PolicyData + { + OrganizationId = dbPolicy?.OrganizationId ?? organizationId, + Data = dbPolicy?.Data, + Type = dbPolicy?.Type ?? policyType, + Enabled = dbPolicy?.Enabled ?? false + }; + } }