Работа с ролями
Дата последнего изменения: 30 апреля 2011 г.
Применимо к: SharePoint Foundation 2010
В этой статье
Создание определения роли
Назначение пользователя на роль в веб-сайте
Создание группы SharePoint и добавление этой группы на роль
Доступно на сайте SharePoint Online
С помощью клиентской объектной модели можно создать настраиваемые определения ролей в семействе сайтов, а также можно назначить новых или существующих пользователей и группы на определенные роли веб-сайтов, списков и элементов списка. Так же как класс SPRoleDefinitionBindingCollection используется в объектной модели сервера, можно добавить пользователя или группу вместе с объектом RoleDefinitionBindingCollection (JavaScript: RoleDefinitionBindingCollection) в коллекцию назначений ролей для определенного объекта.
Создание определения роли
Чтобы создать определение роли в семействе определений ролей для семейства сайтов, используйте класс BasePermissions (JavaScript: BasePermissions) для определения набора разрешений, затем используйте класс RoleDefinitionCreationInformation (JavaScript: RoleDefinitionCreationInformation) для определения роли, которая включает набор разрешений, и затем добавьте эту новую роль в коллекцию определений ролей. В следующем примере показано, как создать роль для создания управляемых оповещений. Свойство Order (JavaScript: order) определяет, что новая роль будет отображаться четвертой в списке настраиваемых определений ролей, перечисленных на странице Уровни разрешений семейства сайтов.
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());
}
Назначение пользователя на роль в веб-сайте
Чтобы назначить пользователя на определенную роль на веб-сайте, нужно создать объект RoleDefinitionBindingCollection (JavaScript: RoleDefinitionBindingCollection) для контекста веб-сайта, добавить определение роли в объект коллекции привязок и затем использовать метод Add(Principal, RoleDefinitionBindingCollection) (JavaScript: add(principal, roleBindings)) для добавления пользователя вместе с коллекцией привязок в назначения ролей для веб-сайта. В следующем примере производится назначение существующего пользователя семейства сайтов на роль, определенную в предыдущем примере.
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());
}
Создание группы SharePoint и добавление этой группы на роль
Таким же образом, как создается большинство объектов в клиентской объектной модели, используйте класс GroupCreationInformation (JavaScript: GroupCreationInformation) для определения новой группы и затем используйте метод Add(GroupCreationInformation) (JavaScript: add(parameters)) для добавления группы в коллекцию групп сайта в семействе сайтов. Затем так же, как пользователи назначаются на роль, добавьте группу на определенную роль в веб-сайте посредством создания объекта RoleDefinitionBindingCollection (JavaScript: RoleDefinitionBindingCollection) для контекста веб-сайта, добавив определение роли в объект коллекции привязок, а затем используя метод Add(Principal, RoleDefinitionBindingCollection) (JavaScript: add(principal, roleBindings)) для добавления группы вместе с коллекцией привязок в назначения ролей для веб сайта. В следующем примере создается группа и назначается на роль Contribute веб-сайта.
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());
}
Дополнительные сведения и примеры работы с клиентскими объектами в контексте объектной модели Silverlight Microsoft SharePoint Foundation 2010 см. в статье Использование объектной модели Silverlight.
См. также
Концепции
Практическое руководство. Работа с пользователями и группами
Нарушение наследования назначения роли
Авторизация, пользователи и группы
Инструкции по использованию клиентской объектной модели