protected override void innerExecute(IRuleContext context){ var activations = ExtractActivations(context); if (null == activations){ var result = DefaultResult; if (CustomDefaultResultRetriever.yes()){ result = CustomDefaultResultRetriever(context.Descriptor(), this); } context.SetControllerRuleResult(result); } else{ base.innerExecute(context); } }
protected override bool innerTest(IRuleContext context){ var ctx = context.Descriptor(); if (null == ctx){ return false; } if (CustomApplyChecker.yes()){ return CustomApplyChecker(ctx, this); } if (Area.yes() && ctx.Area.ToUpper() != Area.ToUpper()){ return false; } if (Category.yes() && !ctx.Category.like(Category, RegexOptions.IgnoreCase)){ return false; } if (Controller.yes() && ctx.Name.ToUpper() != Controller.ToUpper()){ return false; } if (Action.yes() && ctx.Action.ToUpper() != Action.ToUpper()){ return false; } if (Domain.yes() && ctx.User.Identity.Name.toDomain().ToUpper() != Domain.ToUpper()){ return false; } if (Role.yes() && !CheckIsUserInRole(ctx)){ return false; } //FIXED: TODO : Нужна все таки проверка домена - сделано через дополнительный параметр UseDomain bool, default False if (User.yes() && !(ctx.User.toUserName(UseDomain).ToUpper() == User.ToUpper())){ return false; } if (Url.yes() && !ctx.Url.like(Url, RegexOptions.IgnoreCase)){ return false; } if (Parameters.yes() && !ctx.ParametersString.like(Parameters, RegexOptions.IgnoreCase)){ return false; } return true; }