public ValidationRuleDefinition(string name, string feature, ValidationRuleSkus applicableSku, List <RoleEntry> applicableRoleEntries, List <Capability> restrictedCapabilities, List <Capability> overridingAllowCapabilities, ValidationErrorStringProvider errorStringProvider, List <ValidationRuleExpression> expressions) : this(name, feature, applicableSku, applicableRoleEntries, restrictedCapabilities, overridingAllowCapabilities, errorStringProvider)
 {
     if (expressions == null)
     {
         throw new ArgumentNullException("expressions");
     }
     this.Expressions = expressions;
 }
        private static ValidationRuleSkus GetValidationRuleSkuForUser(ADRawEntry currentExecutingUser)
        {
            ValidationRuleSkus result = ValidationRuleSkus.None;
            bool flag = OrganizationId.ForestWideOrgId.Equals(currentExecutingUser[ADObjectSchema.OrganizationId]);

            switch (ValidationRuleFactory.ExchangeSku)
            {
            case Datacenter.ExchangeSku.Enterprise:
                if (flag)
                {
                    result = ValidationRuleSkus.Enterprise;
                }
                break;

            case Datacenter.ExchangeSku.ExchangeDatacenter:
            case Datacenter.ExchangeSku.DatacenterDedicated:
                if (flag)
                {
                    result = ValidationRuleSkus.Datacenter;
                }
                else
                {
                    result = ValidationRuleSkus.DatacenterTenant;
                }
                break;

            case Datacenter.ExchangeSku.PartnerHosted:
                if (flag)
                {
                    result = ValidationRuleSkus.Hosted;
                }
                else
                {
                    result = ValidationRuleSkus.HostedTenant;
                }
                break;
            }
            return(result);
        }
 public ValidationRuleDefinition(string name, string feature, ValidationRuleSkus applicableSku, List <RoleEntry> applicableRoleEntries, List <Capability> restrictedCapabilities, List <Capability> overridingAllowCapabilities, ValidationErrorStringProvider errorStringProvider)
 {
     if (applicableRoleEntries == null)
     {
         throw new ArgumentNullException("applicableRoleEntries");
     }
     if (restrictedCapabilities == null)
     {
         throw new ArgumentNullException("restrictedCapabilities");
     }
     if (overridingAllowCapabilities == null)
     {
         throw new ArgumentNullException("overridingAllowCapabilities");
     }
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentNullException("name");
     }
     if (string.IsNullOrEmpty(feature))
     {
         throw new ArgumentNullException("feature");
     }
     if (errorStringProvider == null)
     {
         throw new ArgumentNullException("errorStringProvider");
     }
     this.Name                  = name;
     this.Feature               = feature;
     this.ApplicableSku         = applicableSku;
     this.ApplicableRoleEntries = applicableRoleEntries;
     this.ErrorString           = errorStringProvider;
     this.ApplicableRoleEntries.Sort(RoleEntryComparer.Instance);
     restrictedCapabilities.Sort();
     this.RestrictedCapabilities = new ReadOnlyCollection <Capability>(restrictedCapabilities);
     overridingAllowCapabilities.Sort();
     this.OverridingAllowCapabilities = new ReadOnlyCollection <Capability>(overridingAllowCapabilities);
 }
 public OrganizationValidationRuleDefinition(string name, string feature, ValidationRuleSkus applicableSku, List <RoleEntry> applicableRoleEntries, ValidationErrorStringProvider errorStringProvider, List <ValidationRuleExpression> restrictionExpressions, List <ValidationRuleExpression> overridingAllowExpressions) : base(name, feature, applicableSku, applicableRoleEntries, new List <Capability>(), new List <Capability>(), errorStringProvider)
 {
     this.RestrictionExpressions     = restrictionExpressions;
     this.OverridingAllowExpressions = overridingAllowExpressions;
 }
        internal static IList <ValidationRule> GetApplicableValidationRules(string cmdletFullName, IList <string> parameters, ValidationRuleSkus applicableSku)
        {
            IList <RoleEntryValidationRuleTuple> applicableRules = RBACValidationRulesList.Instance.GetApplicableRules(cmdletFullName, parameters, applicableSku);
            List <ValidationRule> list = new List <ValidationRule>(applicableRules.Count);

            foreach (RoleEntryValidationRuleTuple roleEntryValidationRuleTuple in applicableRules)
            {
                list.Add(ValidationRuleFactory.Create(roleEntryValidationRuleTuple.RuleDefinition, roleEntryValidationRuleTuple.MatchingRoleEntry));
            }
            return(list);
        }
        internal IList <RoleEntryValidationRuleTuple> GetApplicableRules(string cmdletFullName, IList <string> parameters, ValidationRuleSkus applicableSku)
        {
            if (string.IsNullOrEmpty(cmdletFullName))
            {
                throw new ArgumentNullException("cmdletFullName");
            }
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }
            ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Entering RBACValidationRulesList.GetApplicableRules({0}). Sku {1} ", cmdletFullName, applicableSku.ToString());
            if (!this.IsListInitialized())
            {
                return(RBACValidationRulesList.Nested.TupleEmptyList);
            }
            List <ValidationRuleDefinition>      list  = null;
            IList <RoleEntryValidationRuleTuple> list2 = RBACValidationRulesList.Nested.TupleEmptyList;

            if (this.cmdletToRules.TryGetValue(cmdletFullName, out list))
            {
                RoleEntry targetRoleEntry = null;
                if (this.TryCreateRoleEntry(cmdletFullName, parameters, out targetRoleEntry))
                {
                    RoleEntry matchingRoleEntry = null;
                    list2 = new List <RoleEntryValidationRuleTuple>(list.Count);
                    foreach (ValidationRuleDefinition validationRuleDefinition in list)
                    {
                        if ((byte)(validationRuleDefinition.ApplicableSku & applicableSku) != 0 && validationRuleDefinition.IsRuleApplicable(targetRoleEntry, out matchingRoleEntry))
                        {
                            list2.Add(new RoleEntryValidationRuleTuple(validationRuleDefinition, matchingRoleEntry));
                        }
                    }
                }
            }
            ExTraceGlobals.AccessCheckTracer.TraceDebug <string, string>((long)this.GetHashCode(), "RBACValidationRulesList.GetApplicableRules({0}). returns '{1}'", cmdletFullName, (list2.Count == 0) ? "<Empty>" : (list2.Count.ToString() + " validation rules."));
            return(list2);
        }