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); } } } }
internal static QueryFilter ConstructRoleEntryFilter(string name, ManagementRoleEntryType type, string snapinName) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } char value; switch (type) { case ManagementRoleEntryType.Cmdlet: value = 'c'; goto IL_52; case ManagementRoleEntryType.Script: value = 's'; goto IL_52; case ManagementRoleEntryType.Cmdlet | ManagementRoleEntryType.Script: break; case ManagementRoleEntryType.ApplicationPermission: value = 'a'; goto IL_52; default: if (type == ManagementRoleEntryType.WebService) { value = 'w'; goto IL_52; } break; } throw new ArgumentOutOfRangeException("type"); IL_52: StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(value); stringBuilder.Append(','); stringBuilder.Append(name); if (type == ManagementRoleEntryType.Cmdlet && !string.IsNullOrEmpty(snapinName)) { stringBuilder.Append(','); stringBuilder.Append(snapinName); } stringBuilder.Append(','); stringBuilder.Append('*'); stringBuilder.Replace('?', '*'); return(RBACHelper.ConstructRoleEntryFilter(stringBuilder.ToString())); }
internal static QueryFilter ConstructRoleEntryParameterFilter(string[] parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } List <QueryFilter> list = new List <QueryFilter>(parameters.Length); foreach (string value in parameters) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append('*'); stringBuilder.Append(','); stringBuilder.Append(value); stringBuilder.Append('*'); stringBuilder.Replace('?', '*'); list.Add(RBACHelper.ConstructRoleEntryFilter(stringBuilder.ToString())); } return(new AndFilter(list.ToArray())); }
internal static QueryFilter ConstructRoleEntryFilter(string name, ManagementRoleEntryType type) { return(RBACHelper.ConstructRoleEntryFilter(name, type, null)); }