public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action<object> action) { var web = ExtractWeb(modelHost); if (web != null) { string securityGroupName; if (model is SecurityGroupLinkDefinition) securityGroupName = (model as SecurityGroupLinkDefinition).SecurityGroupName; else if (model is SecurityGroupDefinition) securityGroupName = (model as SecurityGroupDefinition).Name; else { throw new ArgumentException("model has to be SecurityGroupDefinition or SecurityGroupLinkDefinition"); } var securityGroup = web.SiteGroups[securityGroupName]; var newModelHost = new SecurityGroupModelHost { SecurityGroup = securityGroup, SecurableObject = modelHost as SPSecurableObject }; action(newModelHost); } else { action(modelHost); } }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var securableObject = ExtractSecurableObject(modelHost); if (securableObject is SPSecurableObject) { var securityGroupLinkModel = model as SecurityGroupLinkDefinition; if (securityGroupLinkModel == null) throw new ArgumentException("model has to be SecurityGroupDefinition"); var web = ExtractWeb(modelHost); var securityGroup = ResolveSecurityGroup(web, securityGroupLinkModel); var newModelHost = new SecurityGroupModelHost { SecurableObject = securableObject as SPSecurableObject, SecurityGroup = securityGroup }; action(newModelHost); } else { action(modelHost); } }
public override void WithResolvingModelHost(object modelHost, DefinitionBase model, Type childModelType, Action<object> action) { var securableObject = ExtractSecurableObject(modelHost); if (securableObject is SPSecurableObject) { var securityGroupLinkModel = model as SecurityGroupLinkDefinition; if (securityGroupLinkModel == null) throw new ArgumentException("model has to be SecurityGroupDefinition"); var web = ExtractWeb(modelHost); var securityGroup = ResolveSecurityGroup(web, securityGroupLinkModel); var newModelHost = new SecurityGroupModelHost { SecurableObject = securableObject as SPSecurableObject, SecurityGroup = securityGroup }; action(newModelHost); } else { action(modelHost); } }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var web = ExtractWeb(modelHost); if (web != null) { string securityGroupName; if (model is SecurityGroupLinkDefinition) securityGroupName = (model as SecurityGroupLinkDefinition).SecurityGroupName; else if (model is SecurityGroupDefinition) securityGroupName = (model as SecurityGroupDefinition).Name; else { throw new ArgumentException("model has to be SecurityGroupDefinition or SecurityGroupLinkDefinition"); } var securityGroup = web.SiteGroups[securityGroupName]; var newModelHost = new SecurityGroupModelHost { SecurityGroup = securityGroup, SecurableObject = modelHost as SPSecurableObject }; action(newModelHost); } else { action(modelHost); } }
private void DeploySiteGroupUnderSiteGroup(object modelHost, SecurityGroupModelHost securityGroupModelHost, DefinitionBase model) { var securityGroupModel = model.WithAssertAndCast<SecurityGroupDefinition>("model", value => value.RequireNotNull()); var currentGroup = securityGroupModelHost.SecurityGroup; var subGroup = securityGroupModelHost.SecurityGroup.ParentWeb.EnsureUser(securityGroupModel.Name); var existingGroup = currentGroup.Users.OfType<SPPrincipal>() .FirstOrDefault(u => u.ID == subGroup.ID); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentGroup, ObjectType = typeof(SPPrincipal), ObjectDefinition = securityGroupModel, ModelHost = modelHost }); if (existingGroup == null) { currentGroup.Users.Add(subGroup.LoginName, subGroup.Email, subGroup.Name, subGroup.Notes); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentGroup, ObjectType = typeof(SPPrincipal), ObjectDefinition = securityGroupModel, ModelHost = modelHost }); if (existingGroup == null) currentGroup.Update(); }