public bool HasPermission(Permission perm, PermDivisionStatus status, Casino.Division context) { foreach (var node in Permissions) { if (node.HasPerms(perm, status, context)) { return(true); } } return(false); }
public bool HasPerms(Permission testPerm, PermDivisionStatus status, Casino.Division division) { if (testPerm.Division != null) { if (status == PermDivisionStatus.NoDivision) { // nothing } else if (status == PermDivisionStatus.RequirePermissionInContextDivision) { if (this.Division != division.Name.Replace(".", "").ToLower()) { return(false); } } else if (status == PermDivisionStatus.RequirePermissionInAnyDivision) { return(false); } } else { if (status != PermDivisionStatus.NoDivision) { return(false); // since there isnt a Division, but one is required. } } string testNode = testPerm.Node; string[] testNodes = testNode.Split('.'); if (testNode == Node || Node == "*") { return(true); // node is fully specified: so has perm } for (int i = 0; i < nodes.Length && i < testNodes.Length; i++) { if (nodes[i] == "*") { return(true); } if (nodes[i] != testNodes[i]) { return(false); } } return(false); }
public RequirePermissionAttribute(PermCombination combination, params string[] node) { Combination = combination; Permissions = new List <Permission>(); foreach (var p in node) { var perm = Perms.Parse(p); if (perm == null) { throw new ArgumentException("Unknown permission node: " + p); } if (perm.Division != "" && DivisionStatus == PermDivisionStatus.NoDivision) { DivisionStatus = PermDivisionStatus.RequirePermissionInContextDivision; } Permissions.Add(perm); } }
public bool HasPermission(Permission perm, Division division = null, PermDivisionStatus status = PermDivisionStatus.NoDivision) { if (perm == null) { return(false); } if (!string.IsNullOrWhiteSpace(perm.Division) && status == PermDivisionStatus.NoDivision) { status = PermDivisionStatus.RequirePermissionInContextDivision; } foreach (var node in Permissions) { if (node.HasPerms(perm, status, division)) { return(true); } } return(false); }
public bool HasPermission(string permString, out Permission perm, Division division = null, PermDivisionStatus status = PermDivisionStatus.NoDivision) { perm = Perms.Parse(permString); return(HasPermission(perm, division, status)); }
public bool HasPermission(string perm, Division division = null, PermDivisionStatus status = PermDivisionStatus.NoDivision) => HasPermission(Perms.Parse(perm), division, status);