Files
2026-03-13 09:24:21 -05:00

27 lines
962 B
C#

namespace LCU.WebApps.Internal.DocumentManager.Configurations;
public record Security(AccessPolicy[] Policies);
public record AccessPolicy(string Name, string[] Groups, AccessPolicy[]? Policies);
public static class SecurityConfigurationFactory
{
public static Security FromConfiguration(IConfigurationSection configuration)
{
var policies = configuration
.GetSection("AccessPolicies")
.GetChildren()
.Select(PolicyFactory);
return new Security(policies.ToArray());
}
private static AccessPolicy PolicyFactory(IConfigurationSection configuration)
{
return new AccessPolicy
(
configuration.Key,
configuration.GetValue<string>(nameof(AccessPolicy.Groups)).Split(",").Select(g => g.Trim()).ToArray(),
configuration.GetChildren().Where(c => c[nameof(AccessPolicy.Groups)] is not null).Select(PolicyFactory).ToArray()
);
}
}