64e3fbe035
v2-ci / build (push) Failing after 1m43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Adds <summary>, <param>, <typeparam>, and <inheritdoc/> tags to public members surfaced by commentchecker — resolves 5,847 of 5,869 issues (99.6%) across three /fixdocs passes.
32 lines
969 B
C#
32 lines
969 B
C#
namespace ZB.MOM.WW.OtOpcUa.Cluster;
|
|
|
|
public static class RoleParser
|
|
{
|
|
private static readonly HashSet<string> Allowed = new(StringComparer.Ordinal)
|
|
{
|
|
"admin", "driver", "dev",
|
|
};
|
|
|
|
/// <summary>Parses a comma-separated string of role names into a validated array.</summary>
|
|
/// <param name="raw">The raw role string to parse.</param>
|
|
public static string[] Parse(string? raw)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(raw)) return Array.Empty<string>();
|
|
|
|
var roles = raw
|
|
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
|
|
.Select(r => r.ToLowerInvariant())
|
|
.Distinct()
|
|
.ToArray();
|
|
|
|
foreach (var r in roles)
|
|
{
|
|
if (!Allowed.Contains(r))
|
|
throw new ArgumentException(
|
|
$"Unknown role '{r}'. Allowed: {string.Join(", ", Allowed)}.", nameof(raw));
|
|
}
|
|
|
|
return roles;
|
|
}
|
|
}
|