Пример #1
0
 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);
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
 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);
 }
Пример #5
0
 public bool HasPermission(string permString, out Permission perm, Division division = null, PermDivisionStatus status = PermDivisionStatus.NoDivision)
 {
     perm = Perms.Parse(permString);
     return(HasPermission(perm, division, status));
 }
Пример #6
0
 public bool HasPermission(string perm, Division division = null, PermDivisionStatus status = PermDivisionStatus.NoDivision) => HasPermission(Perms.Parse(perm), division, status);