private static ValidationRule Create(ValidationRuleDefinition definition, RoleEntry roleEntry) { ExTraceGlobals.PublicCreationAPITracer.TraceDebug <string, string>((long)definition.GetHashCode(), "Entering ValidationRuleFactory.GetValidationRule({0}) - Creating ValidationRule. Name: '{1}'", (null == roleEntry) ? "<NULL>" : roleEntry.ToString(), definition.Name); OrganizationValidationRuleDefinition organizationValidationRuleDefinition = definition as OrganizationValidationRuleDefinition; if (organizationValidationRuleDefinition != null) { return(new OrganizationValidationRule(organizationValidationRuleDefinition, roleEntry)); } IEnumerable <Capability> restrictedCapabilities = definition.RestrictedCapabilities; List <CapabilityIdentifierEvaluator> list = new List <CapabilityIdentifierEvaluator>(); foreach (Capability capability in restrictedCapabilities) { list.Add(CapabilityIdentifierEvaluatorFactory.Create(capability)); } IEnumerable <Capability> overridingAllowCapabilities = definition.OverridingAllowCapabilities; List <CapabilityIdentifierEvaluator> list2 = new List <CapabilityIdentifierEvaluator>(); foreach (Capability capability2 in overridingAllowCapabilities) { list2.Add(CapabilityIdentifierEvaluatorFactory.Create(capability2)); } if (definition.Expressions == null) { return(new RestrictedValidationRule(definition, list, list2, roleEntry)); } return(new ExpressionFilterValidationRule(definition, list, list2, roleEntry)); }
private void Initialize(IEnumerable <ValidationRuleDefinition> rules) { if (rules == null) { throw new ArgumentNullException("rules"); } if (this.featuresToRules != null && this.cmdletToRules != null) { return; } lock (this.listLock) { if (this.featuresToRules == null || this.cmdletToRules == null) { this.cmdletToRules = new Dictionary <string, List <ValidationRuleDefinition> >(); this.featuresToRules = new Dictionary <string, List <ValidationRuleDefinition> >(); foreach (ValidationRuleDefinition validationRuleDefinition in rules) { if (validationRuleDefinition.Expressions != null && validationRuleDefinition.Expressions.Count > 0) { foreach (ValidationRuleExpression validationRuleExpression in validationRuleDefinition.Expressions) { MonadFilter monadFilter = new MonadFilter(validationRuleExpression.QueryString, null, validationRuleExpression.Schema); validationRuleExpression.QueryFilter = monadFilter.InnerFilter; } } OrganizationValidationRuleDefinition organizationValidationRuleDefinition = validationRuleDefinition as OrganizationValidationRuleDefinition; if (organizationValidationRuleDefinition != null) { if (organizationValidationRuleDefinition.OverridingAllowExpressions != null && organizationValidationRuleDefinition.OverridingAllowExpressions.Count > 0) { foreach (ValidationRuleExpression validationRuleExpression2 in organizationValidationRuleDefinition.OverridingAllowExpressions) { MonadFilter monadFilter2 = new MonadFilter(validationRuleExpression2.QueryString, null, validationRuleExpression2.Schema); validationRuleExpression2.QueryFilter = monadFilter2.InnerFilter; } } if (organizationValidationRuleDefinition.RestrictionExpressions != null && organizationValidationRuleDefinition.RestrictionExpressions.Count > 0) { foreach (ValidationRuleExpression validationRuleExpression3 in organizationValidationRuleDefinition.RestrictionExpressions) { MonadFilter monadFilter3 = new MonadFilter(validationRuleExpression3.QueryString, null, validationRuleExpression3.Schema); validationRuleExpression3.QueryFilter = monadFilter3.InnerFilter; } } } foreach (RoleEntry roleEntry in validationRuleDefinition.ApplicableRoleEntries) { string key = roleEntry.Name; if (roleEntry is CmdletRoleEntry) { key = ((CmdletRoleEntry)roleEntry).FullName; } RBACHelper.AddValueToDictionaryList <ValidationRuleDefinition>(this.cmdletToRules, key, validationRuleDefinition); } RBACHelper.AddValueToDictionaryList <ValidationRuleDefinition>(this.featuresToRules, validationRuleDefinition.Feature, validationRuleDefinition); } } } }