private void CreateAccessRules(IAccessRuleFactory accessRuleFactory, IAccessRuleReportFactory accessRuleReportFactory, Subject subject, IList <string> typeNames, IList <EntityRef> permissions, string aliasTemplate, Solution solution = null) { AccessRule accessRule; foreach (string typeName in typeNames) { SecurableEntity targetType = Entity.Get <SecurableEntity>(typeName); Assert.That(targetType, Is.Not.Null, string.Format("Type {0} does not exist", typeName)); accessRule = accessRuleFactory.AddAllowByQuery( subject, targetType, permissions, accessRuleReportFactory.GetDisplayReportForSecurableEntity(targetType)); accessRule = accessRule.AsWritable <AccessRule>(); accessRule.Alias = string.Format(aliasTemplate, new EntityRef(typeName).Alias); accessRule.AccessRuleHidden = true; if (solution != null) { accessRule.InSolution = solution; } accessRule.Save(); Console.WriteLine("Create access rule {0} {1}", accessRule.Alias, accessRule.Id); } }
/// <summary> /// Create a new <see cref="AccessRulesController" /> with the given /// <see cref="IAccessRuleFactory" /> for creating new access rules. /// </summary> /// <param name="accessRuleFactory"> /// The <see cref="IAccessRuleFactory" /> to use. This cannot be null. /// </param> /// <param name="accessRuleReportFactory"> /// The <see cref="IAccessRuleReportFactory" /> to use. This cannot be null. /// </param> /// <exception cref="ArgumentNullException"> /// No argument can be null. /// </exception> internal AccessRulesController(IAccessRuleFactory accessRuleFactory, IAccessRuleReportFactory accessRuleReportFactory) { if (accessRuleFactory == null) { throw new ArgumentNullException("accessRuleFactory"); } if (accessRuleReportFactory == null) { throw new ArgumentNullException("accessRuleReportFactory"); } RuleFactory = accessRuleFactory; ReportFactory = accessRuleReportFactory; }