public static ModelNode AddSecurityGroupLink(this  ModelNode model, SecurityGroupDefinition definition, Action<ModelNode> action)
 {
     return AddSecurityGroupLink(model, new SecurityGroupLinkDefinition
     {
         SecurityGroupName = definition.Name
     }, action);
 }
        public static ModelNode AddSecurityGroupLink(this  ModelNode model, SecurityGroupDefinition definition, Action<ModelNode> action)
        {
            return AddSecurityGroupLink(model, new SecurityGroupLinkDefinition
            {
                SecurityGroupName = definition.Name,

                IsAssociatedMemberGroup = definition.IsAssociatedMemberGroup,
                IsAssociatedOwnerGroup = definition.IsAssociatedOwnerGroup,
                IsAssociatedVisitorGroup = definition.IsAssociatedVisitorsGroup

            }, action);
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item = (reverseHost as SecurityGroupReverseHost).HostGroup;

            var def = new SecurityGroupDefinition();

            def.Name = item.Title;
            def.Description = item.Description;

            return new SecurityGroupModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            };
        }
 public static ModelNode AddSecurityGroupLink(this  ModelNode model, SecurityGroupDefinition definition)
 {
     return AddSecurityGroupLink(model, definition, null);
 }
 protected virtual SPUser EnsureOwnerUser(SPWeb web, SecurityGroupDefinition groupModel)
 {
     if (string.IsNullOrEmpty(groupModel.Owner))
     {
         return web.Site.Owner;
     }
     else
     {
         return web.EnsureUser(groupModel.Owner);
     }
 }
 protected virtual SPUser EnsureDefaultUser(SPWeb web, SecurityGroupDefinition groupModel)
 {
     if (string.IsNullOrEmpty(groupModel.DefaultUser))
     {
         return null;
     }
     else
     {
         return web.EnsureUser(groupModel.DefaultUser);
     }
 }
        public void Deploy_SecurityGroups()
        {
            // Step 1, define security groups
            var customerSupport = new SecurityGroupDefinition
            {
                Name = "Customer support",
                Description = "Customer support team."
            };

            var customerReviewers = new SecurityGroupDefinition
            {
                Name = "Customer reviewers",
                Description = "Customer reviewers team."
            };

            // Step 2, define web model and artifact relationships - add security groups t the web 
            var model = SPMeta2Model
                             .NewSiteModel(site =>
                             {
                                 site
                                   .AddSecurityGroup(customerSupport)
                                   .AddSecurityGroup(customerReviewers);
                             });

            // Step 3, deploy model
            DeploySiteModel(model);
        }
 public static ModelNode AddSecurityGroup(this ModelNode model, SecurityGroupDefinition definition, Action<ModelNode> action)
 {
     return model.AddDefinitionNode(definition, action);
 }