Freigeben über


Gewusst wie: Arbeiten mit Rollen

Letzte Änderung: Samstag, 30. April 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Erstellen einer Rollendefinition
Zuweisen einer Rolle auf einer Website zu einem Benutzer
Erstellen einer SharePoint-Gruppe und Hinzufügen der Gruppe zu einer Rolle

Verfügbar in SharePoint Online

Mithilfe des Clientobjektmodells können Sie benutzerdefinierte Rollendefinitionen innerhalb von Websitesammlungen erstellen und neuen oder vorhandenen Benutzern und Gruppen bestimmte Rollen für Websites, Listen und Listenelemente zuweisen. Ähnlich wie Sie die SPRoleDefinitionBindingCollection-Klasse im Serverobjektmodell verwenden, können Sie einen Benutzer oder eine Gruppe, zusammen mit einem RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection), der Sammlung von Rollenzuweisungen für ein bestimmtes Objekt hinzufügen.

Erstellen einer Rollendefinition

Verwenden Sie zum Erstellen einer Rollendefinition in der Sammlung von Rollendefinitionen für eine Websitesammlung die BasePermissions-Klasse (JavaScript: BasePermissions), um einen Berechtigungssatz zu definieren, definieren Sie mit der RoleDefinitionCreationInformation-Klasse (JavaScript: RoleDefinitionCreationInformation) eine Rolle, die den Berechtigungssatz enthält, und fügen Sie dann die neue Rolle der Sammlung von Rollendefinitionen hinzu. Im folgenden Beispiel wird das Erstellen einer Rolle zum Erstellen und Verwalten von Berechtigungen veranschaulicht. Mit der Order-Eigenschaft (JavaScript: order) wird angegeben, dass die neue Rolle als viertes Element der benutzerdefinierten Rollendefinitionen angezeigt wird, die auf der Seite Berechtigungsstufen der Websitesammlung aufgelistet werden.

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());
}

Zuweisen einer Rolle auf einer Website zu einem Benutzer

Wenn Sie einem Benutzer eine bestimmte Rolle auf einer Website zuweisen möchten, erstellen Sie ein RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection) für den Websitekontext, fügen Sie dem Bindungssammlungsobjekt eine Rollendefinition hinzu, und fügen Sie dann mit der Add(Principal, RoleDefinitionBindingCollection)-Methode (JavaScript: add(principal, roleBindings)) den Benutzer zusammen mit der Bindungssammlung den Rollenzuweisungen für die Website hinzu. Im folgenden Beispiel wird einem vorhandenen Websitesammlungsbenutzer die im vorherigen Beispiel definierte Rolle zugewiesen.

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());
}

Erstellen einer SharePoint-Gruppe und Hinzufügen der Gruppe zu einer Rolle

Verwenden Sie wie beim Erstellen der meisten anderen Objekte mithilfe des Clientobjektmodells die GroupCreationInformation-Klasse (JavaScript: GroupCreationInformation), um eine neue Gruppe zu definieren, und fügen Sie dann mit der Add(GroupCreationInformation)-Methode (JavaScript: add(parameters)) die Gruppe der Sammlung von Websitegruppen in einer Websitesammlung hinzu. Und genau so wie Sie Benutzern eine Rolle zuweisen, weisen Sie einer Gruppe eine bestimmte Rolle auf einer Website hinzu, indem Sie ein RoleDefinitionBindingCollection-Objekt (JavaScript: RoleDefinitionBindingCollection) für den Websitekontext erstellen, dem Bindungssammlungsobjekt eine Rollendefinition hinzufügen und dann mit der Add(Principal, RoleDefinitionBindingCollection)-Methode (JavaScript: add(principal, roleBindings)) die Gruppe zusammen mit der Bindungssammlung den Rollenzuweisungen für die Website hinzufügen. Im folgenden Beispiel erstellen Sie eine Gruppe und weisen ihr die Contribute-Rolle auf der Website zu.

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());
}

Informationen und Beispiele zur Arbeitsweise mit Clientobjekten im Kontext des Microsoft SharePoint Foundation 2010-Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.

Siehe auch

Konzepte

Gewusst wie: Verwenden von Benutzern und Gruppen

Gewusst wie: Unterbrechen der Vererbung von Rollenzuweisungen

Autorisierung, Benutzer und Gruppen

Übersicht über den Datenabruf

Erstellen von Clientobjekten

Richtlinien für das Clientobjektmodell

Allgemeine Programmieraufgaben

Weitere Ressourcen

Clientklassenbibliothek

ECMAScript-Klassenbibliothek