예제 #1
0
            public static bool TryParse(string rbacQuery, out RbacQuery.RbacQueryProcessor queryProcessor)
            {
                queryProcessor = null;
                bool flag = false;

                if (rbacQuery == null || rbacQuery.Length == 0)
                {
                    return(false);
                }
                if (rbacQuery[0] == '!')
                {
                    flag      = true;
                    rbacQuery = rbacQuery.Substring(1);
                }
                if (RbacQuery.ConditionalQueryProcessors.creators != null)
                {
                    foreach (RbacQuery.ConditionalQueryProcessors.QueryProcesorCreator queryProcesorCreator in RbacQuery.ConditionalQueryProcessors.creators)
                    {
                        if (queryProcesorCreator(rbacQuery, out queryProcessor))
                        {
                            if (flag)
                            {
                                queryProcessor = new RbacQuery.NotQueryProcessor(queryProcessor);
                            }
                            return(true);
                        }
                    }
                    return(false);
                }
                return(false);
            }
예제 #2
0
            public static bool TryParse(string rbacQuery, out RbacQuery.RbacQueryProcessor queryProcessor)
            {
                Match match = RbacQuery.CmdletQueryProcessor.regex.Match(rbacQuery);

                if (match.Success)
                {
                    queryProcessor = new RbacQuery.CmdletQueryProcessor(match);
                    return(true);
                }
                queryProcessor = null;
                return(false);
            }
예제 #3
0
        static RbacQuery()
        {
            foreach (object obj in Enum.GetValues(typeof(RoleType)))
            {
                RoleType roleType = (RoleType)obj;
                RbacQuery.WellKnownQueryProcessors.Add(roleType.ToString(), new RbacQuery.RoleTypeQueryProcessor(roleType));
            }
            List <string> list = new List <string>(RbacQuery.WellKnownQueryProcessors.Keys);

            foreach (string text in list)
            {
                RbacQuery.RbacQueryProcessor predicate = RbacQuery.WellKnownQueryProcessors[text];
                RbacQuery.WellKnownQueryProcessors.Add("!" + text, new RbacQuery.NotQueryProcessor(predicate));
            }
        }
예제 #4
0
 public static void RegisterQueryProcessor(string role, RbacQuery.RbacQueryProcessor processor)
 {
     RbacQuery.WellKnownQueryProcessors.Add(role, processor);
     RbacQuery.WellKnownQueryProcessors.Add("!" + role, new RbacQuery.NotQueryProcessor(processor));
 }
예제 #5
0
 public NotQueryProcessor(RbacQuery.RbacQueryProcessor predicate)
 {
     this.Predicate = predicate;
 }