Serenity.Web.LogicOperatorPermissionService.HasPermission C# (CSharp) Method

HasPermission() public method

public HasPermission ( string permission ) : bool
permission string
return bool
        public bool HasPermission(string permission)
        {
            if (string.IsNullOrEmpty(permission) ||
                permission.IndexOfAny(chars) < 0)
                return permissionService.HasPermission(permission);

            string[][] expr;
            if (!cache.TryGetValue(permission, out expr))
            {
                var parts = permission.Split(or, StringSplitOptions.RemoveEmptyEntries);
                expr = new string[parts.Length][];
                for (var i = 0; i < parts.Length; i++)
                {
                    expr[i] = parts[i].Split(and, StringSplitOptions.RemoveEmptyEntries);
                }

                cache[permission] = expr;
            }

            for (var r = 0; r < expr.Length; r++)
            {
                var p = expr[r];

                if (p.Length == 0)
                    continue;

                bool fail = false;
                for (var n = 0; n < p.Length; n++)
                {
                    if (!permissionService.HasPermission(p[n]))
                    {
                        fail = true;
                        break;
                    }
                }

                if (!fail)
                    return true;
            }

            return false;
        }
    }

Usage Example

 public void ReturnsFalseForAndWhenAllFalse()
 {
     var lops = new LogicOperatorPermissionService(FakeService());
     Assert.Equal(false, lops.HasPermission("F&N"));
     Assert.Equal(false, lops.HasPermission("N&F"));
     Assert.Equal(false, lops.HasPermission("N&N&N"));
     Assert.Equal(false, lops.HasPermission("N&N&F&F"));
     Assert.Equal(false, lops.HasPermission("N&F&N&F"));
 }
All Usage Examples Of Serenity.Web.LogicOperatorPermissionService::HasPermission