2010-12-13 39 views
2

J'utilise le modèle objet SharePoint pour créer de nouveaux sites par programmation (avec un composant WebPart personnalisé). Cela fonctionne bien mais je me demande s'il est possible d'accorder la permission pour les groupes aussi?Est-il possible d'accorder la permission pour des groupes (dans SharePoint) à un site par programmation?

Lorsque je crée le site que je l'ai mis à hérita pas la permission

newWeb = SPContext.GetContext(HttpContext.Current).Web.Webs.Add(siteUrl, siteName, siteDescription, (uint)1033, siteTemplate, true, false); 

Dans l'interface graphique, je peux ensuite aller sur Actions du site (sur le site nouvellement créé) -> Autorisation de subvention -> Recherche pour les groupes dans le site parent, puis accorder l'autorisation pour ce groupe. Ainsi, dans le site parent, myGroup peut avoir des autorisations d'accès complet, mais dans ce site je peux le définir sur Contribution ou autre. Est-il possible de le faire lorsque je crée le site ou juste après (par programmation)?

Merci d'avance.

Répondre

2

Vous devez affecter une définition de rôle à votre groupe.

Voici un extrait de code que j'ai écrit pour affecter un groupe à l'une des définitions de rôle de point de partage prédéfinies.

public bool AssignExistingGroupToWeb(SPWeb siteWeb, string GroupName, SPRoleDefinition roleDefinition) 
{ 
//retrieve a group 
SPGroup siteGroup = siteWeb.SiteGroups.FindGroupByName(GroupName); 

//create a role assignment for the group using the specified SPRoleDefinition 
//examples of roles as "Full Control", "Design", etc... 
SPRoleAssignment roleAssignment = new SPRoleAssignment(siteGroup); 
roleAssignment.RoleDefinitionBindings.Add(roleDefinition); 
siteWeb.RoleAssignments.Add(roleAssignment); 
siteWeb.Update(); 
} 

Vous pouvez récupérer un SPRoleDefinition en accédant à la collection RoleDefinitions, comme si ...

siteWeb.RoleDefinitions["Contribute"]