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(); }
public RuleDefinition(IAuthorizationRule rule, RuleConcatenationModeEnum mode) : this() { this.Rule = rule; this.Mode = mode; }