namespace ZB.MOM.WW.OtOpcUa.Cluster; public static class RoleParser { private static readonly HashSet Allowed = new(StringComparer.Ordinal) { "admin", "driver", "dev", }; /// Parses a comma-separated string of role names into a validated array. /// The raw role string to parse. public static string[] Parse(string? raw) { if (string.IsNullOrWhiteSpace(raw)) return Array.Empty(); 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; } }