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);
}