27 lines
962 B
C#
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()
|
|
);
|
|
}
|
|
} |