Beispiel #1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            bool?lastResult = null;
            RuleConcatenationModeEnum lastRule = RuleConcatenationModeEnum.None;

            foreach (var rule in this.rules)
            {
                var currentResult = rule.Item1.IsValid(filterContext);

                lastResult = lastResult.HasValue ?
                             this.indexedRules[lastRule].Invoke(lastResult, currentResult) : currentResult;

                lastRule = rule.Item2;
            }

            if (!lastResult.Value)
            {
                this.SetUnAuthorizedRequest(filterContext);
            }

            this.rules.Clear();
        }
Beispiel #2
0
 public RuleDefinition(IAuthorizationRule rule, RuleConcatenationModeEnum mode)
     : this()
 {
     this.Rule = rule;
     this.Mode = mode;
 }