Procédure : utiliser des rôles
Dernière modification : samedi 30 avril 2011
S’applique à : SharePoint Foundation 2010
Dans cet article
Création d’une définition de rôle
Affectation d’un utilisateur à un rôle sur un site Web
Création d’un groupe SharePoint et ajout du groupe à un rôle
Disponible dans SharePoint Online
Via le modèle objet client, vous pouvez créer des définitions de rôle personnalisées dans des collections de sites et affecter des utilisateurs et des groupes nouveaux ou existants à des rôles spécifiques pour des éléments de liste, des listes ou des sites Web. Tout comme vous utilisez la classe SPRoleDefinitionBindingCollection dans le modèle objet serveur, vous pouvez ajouter un utilisateur ou un groupe avec un objet RoleDefinitionBindingCollection (JavaScript: RoleDefinitionBindingCollection) à la collection des affectations de rôle pour un objet spécifique.
Création d’une définition de rôle
Pour créer une définition de rôle dans la collection des définitions de rôle pour une collection de sites, vous devez utiliser la classe BasePermissions (JavaScript : BasePermissions) pour définir un jeu d’autorisations, utiliser la classe RoleDefinitionCreationInformation (JavaScript: RoleDefinitionCreationInformation) pour définir un rôle incluant le jeu d’autorisations, puis ajouter le nouveau rôle à la collection des définitions de rôle. L’exemple ci-après montre comment créer un rôle pour créer et gérer des alertes. La propriété Order (JavaScript : order) spécifie que le nouveau rôle doit être affiché en quatrième position dans les définitions de rôle personnalisées répertoriées dans la page Niveaux d’autorisation de la collection de sites.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateRoleDefinition
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
Web oWebsite = clientContext.Web;
BasePermissions permissions = new BasePermissions();
permissions.Set(PermissionKind.CreateAlerts);
permissions.Set(PermissionKind.ManageAlerts);
RoleDefinitionCreationInformation roleCreationInfo = new RoleDefinitionCreationInformation();
roleCreationInfo.BasePermissions = permissions;
roleCreationInfo.Description = "A new role with create and manage alerts permission";
roleCreationInfo.Name = "Create and Manage Alerts";
roleCreationInfo.Order = 4;
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.Add(roleCreationInfo);
clientContext.ExecuteQuery();
Console.WriteLine("{0} role created.", oRoleDefinition.Name);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateRoleDefinition
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim permissions As New BasePermissions()
permissions.Set(PermissionKind.CreateAlerts)
permissions.Set(PermissionKind.ManageAlerts)
Dim roleCreationInfo As New RoleDefinitionCreationInformation()
roleCreationInfo.BasePermissions = permissions
roleCreationInfo.Description = "A new role with create and manage alerts permission"
roleCreationInfo.Name = "Create and Manage Alerts"
roleCreationInfo.Order = 4
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.Add(roleCreationInfo)
clientContext.ExecuteQuery()
Console.WriteLine("{0} role created.", oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
function createRoleDefinition() {
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
var permissions = new SP.BasePermissions();
permissions.set(SP.PermissionKind.createAlerts);
permissions.set(SP.PermissionKind.manageAlerts);
var roleCreationInfo = new SP.RoleDefinitionCreationInformation();
roleCreationInfo.set_basePermissions(permissions);
roleCreationInfo.set_description('A new role with create and manage alerts permission');
roleCreationInfo.set_name('Create and Manage AlertsT');
roleCreationInfo.set_order(4);
this.oRoleDefinition = oWebsite.get_roleDefinitions().add(roleCreationInfo);
clientContext.load(oRoleDefinition);
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oRoleDefinition.get_name() + ' role created.';
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Affectation d’un utilisateur à un rôle sur un site Web
Pour affecter un utilisateur à un rôle spécifique sur un site Web, vous devez créer un objet RoleDefinitionBindingCollection (JavaScript : RoleDefinitionBindingCollection) pour le contexte du site Web, ajouter une définition de rôle à l’objet de collection de liaisons, puis utiliser la méthode Add(Principal, RoleDefinitionBindingCollection) (JavaScript : add(principal, roleBindings)) pour ajouter l’utilisateur avec la collection de liaisons aux affectations de rôle pour le site Web. L’exemple ci-après permet d’affecter un utilisateur de collection de sites existant au rôle défini dans l’exemple précédent.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class AddUserToRole
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
Principal oUser = oWebsite.SiteUsers.GetByLoginName(@"DOMAIN\alias");
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByName("Create and Manage Alerts");
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
collRoleDefinitionBinding.Add(oRoleDefinition);
RoleAssignment oRoleAssignment = oWebsite.RoleAssignments.Add(oUser, collRoleDefinitionBinding);
clientContext.Load(oUser,
user => user.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} added with {1} role.", oUser.Title, oRoleDefinition.Name);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class AddUserToRole
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim oUser As Principal = oWebsite.SiteUsers.GetByLoginName("domain\alias")
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.GetByName("Create and Manage Alerts")
Dim collRoleDefinitionBinding As New RoleDefinitionBindingCollection(clientContext)
collRoleDefinitionBinding.Add(oRoleDefinition)
Dim oRoleAssignment As RoleAssignment = oWebsite.RoleAssignments.Add(oUser, collRoleDefinitionBinding)
clientContext.Load(oUser, _
Function(user) user.Title)
clientContext.Load(oRoleDefinition, _
Function(role) role.Name)
clientContext.ExecuteQuery()
Console.WriteLine("{0} added with {1} role.", oUser.Title, oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection/MyWebSite';
function addUserToRole() {
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
this.oUser = oWebsite.get_siteUsers().getByLoginName('DOMAIN\\alias');
this.oRoleDefinition = oWebsite.get_roleDefinitions().getByName('Create and Manage Alerts');
var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext);
collRoleDefinitionBinding.add(oRoleDefinition);
var oRoleAssignment = oWebsite.get_roleAssignments().add(oUser, collRoleDefinitionBinding);
clientContext.load(oUser, 'Title');
clientContext.load(oRoleDefinition, 'Name');
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oUser.get_title() + ' assigned to ' + oRoleDefinition.get_name();
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Création d’un groupe SharePoint et ajout du groupe à un rôle
Tout comme vous créez la plupart des autres objets via le modèle objet client, vous pouvez utiliser la classe GroupCreationInformation (JavaScript : GroupCreationInformation) pour définir un nouveau groupe, puis utiliser la méthode Add(GroupCreationInformation) (JavaScript: add(parameters)) pour ajouter le groupe à la collection des groupes de sites dans une collection de sites. Et, tout comme vous affectez des utilisateurs à un rôle, vous pouvez affecter un groupe à un rôle spécifique sur un site Web en créant un objet RoleDefinitionBindingCollection (JavaScript: RoleDefinitionBindingCollection) pour le contexte du site Web, en ajoutant une définition de rôle à l’objet de collection de liaisons, puis en utilisant la méthode Add(Principal, RoleDefinitionBindingCollection) (JavaScript : add(principal, roleBindings)) pour ajouter le groupe avec la collection de liaisons aux affectations de rôle pour le site Web. L’exemple ci-après permet de créer un groupe et de lui affecter le rôle Contribute sur le site Web.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class CreateGroupAddToRole
{
static void Main()
{
ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
Web oWebsite = clientContext.Web;
GroupCreationInformation groupCreationInfo = new GroupCreationInformation();
groupCreationInfo.Title = "My New Group";
groupCreationInfo.Description = "Description of new group.";
Group oGroup = oWebsite.SiteGroups.Add(groupCreationInfo);
RoleDefinitionBindingCollection collRoleDefinitionBinding = new RoleDefinitionBindingCollection(clientContext);
RoleDefinition oRoleDefinition = oWebsite.RoleDefinitions.GetByType(RoleType.Contributor);
collRoleDefinitionBinding.Add(oRoleDefinition);
oWebsite.RoleAssignments.Add(oGroup, collRoleDefinitionBinding);
clientContext.Load(oGroup,
group => group.Title);
clientContext.Load(oRoleDefinition,
role => role.Name);
clientContext.ExecuteQuery();
Console.WriteLine("{0} created and assigned {1} role.", oGroup.Title, oRoleDefinition.Name); }
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class CreateGroupAddToRole
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim oWebsite As Web = clientContext.Web
Dim groupCreationInfo As New GroupCreationInformation()
groupCreationInfo.Title = "My New Group "
groupCreationInfo.Description = "Description of new group."
Dim oGroup As Group = oWebsite.SiteGroups.Add(groupCreationInfo)
Dim collRoleDefinitionBinding As New RoleDefinitionBindingCollection(clientContext)
Dim oRoleDefinition As RoleDefinition = oWebsite.RoleDefinitions.GetByType(RoleType.Contributor)
collRoleDefinitionBinding.Add(oRoleDefinition)
oWebsite.RoleAssignments.Add(oGroup, collRoleDefinitionBinding)
clientContext.Load(oGroup, _
Function(group) group.Title)
clientContext.Load(oRoleDefinition, _
Function(role) role.Name)
clientContext.ExecuteQuery()
Console.WriteLine("{0} created and assigned {1} role.", oGroup.Title, oRoleDefinition.Name)
End Sub
End Class
End Namespace
siteUrl = '/sites/MySiteCollection/MyWebSite';
function createGroupAddToRole() {
var clientContext = new SP.ClientContext(siteUrl);
this.oWebsite = clientContext.get_web();
var groupCreationInfo = new SP.GroupCreationInformation();
groupCreationInfo.set_title('My New GroupT');
groupCreationInfo.set_description('Description of new group.');
this.oGroup = oWebsite.get_siteGroups().add(groupCreationInfo);
var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext);
this.oRoleDefinition = oWebsite.get_roleDefinitions().getByType(SP.RoleType.contributor);
collRoleDefinitionBinding.add(oRoleDefinition);
var collRollAssignment = oWebsite.get_roleAssignments();
collRollAssignment.add(oGroup, collRoleDefinitionBinding);
clientContext.load(oGroup, 'Title');
clientContext.load(oRoleDefinition, 'Name');
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var roleInfo = oGroup.get_title() + ' created and assigned to ' + oRoleDefinition.get_name();
alert(roleInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Pour obtenir des informations et des exemples relatifs à l’utilisation des objets clients dans le contexte du modèle objet Silverlight Microsoft SharePoint Foundation 2010, reportez-vous à l’article Utilisation du modèle objet Silverlight.
Voir aussi
Concepts
Procédure : utiliser des utilisateurs et des groupes
Procédure : annuler l’héritage des affectations de rôle
Autorisation, utilisateurs et groupes
Vue d'ensemble de la récupération des données
Directive du modèle objet client
Tâches courantes de programmation