diff options
Diffstat (limited to 'Acl.cs')
| -rw-r--r-- | Acl.cs | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -0,0 +1,35 @@ +namespace HyperBooru; + +public enum AclRuleAction { + Allow, + Deny +} + +public class Acl : HBObject { + public HBObject Subject { get; set; } + public List<AclRule> Rules { get; set; } +} + +public class Acl<T> : Acl where T : Enum { + public Type Type => typeof(T); + + public new List<AclRule<T>> Rules { + get => base.Rules.Cast<AclRule<T>>().ToList(); + set => base.Rules = value.Cast<AclRule>().ToList(); + } +} + +public class AclRule : HBObject { + public HBPrincipal Principal { get; set; } + public AclRuleAction Action { get; set; } + public ulong Permissions { get; set; } +} + +public class AclRule<T> : AclRule where T : Enum { + public Type Type => typeof(T); + + public new T Permissions { + get => (T) (object) base.Permissions; + set => base.Permissions = (ulong) (object) value; + } +} |
