namespace zero.Identity; public class PermissionContext : IPermissionContext { /// public HashSet Groups { get; protected set; } /// public IZeroOptions Options { get; protected set; } public PermissionContext(IZeroOptions options) { Groups = new(); Options = options; } /// public PermissionGroup? GetGroup(string key) { return Groups.FirstOrDefault(x => x.Key == key); } /// public bool TryGetGroup(string key, out PermissionGroup group) { group = Groups.FirstOrDefault(x => x.Key == key); return Groups.Contains(group); } /// public void AddGroup(PermissionGroup group) { Groups.Add(group); } /// public void RemoveGroup(PermissionGroup group) { Groups.Remove(group); } } public interface IPermissionContext { /// /// All registered permission groups /// HashSet Groups { get; } /// /// Zero options /// IZeroOptions Options { get; } /// /// Try to get a permission group by key /// PermissionGroup? GetGroup(string key); /// /// Get permission group by key /// bool TryGetGroup(string key, out PermissionGroup group); /// /// Add a new permission group to the context /// void AddGroup(PermissionGroup group); /// /// Remove a permission group from the context /// void RemoveGroup(PermissionGroup group); }