Мне нужно добавить уровни разрешений в список, такие как: Полный доступ, Участие, Управление иерархией, Только просмотр и т. Д.
Я вижу здесь: « программно добавляет разрешение пользователя в список в sharepoint », что это можно сделать с помощью объектной модели. Как бы я сделал то же самое с помощью веб-служб?
Я попытался использовать веб-сервисы permissions.asmx, он работает для некоторых из них, давая правильную маску, например 1011028991 для утверждения, 138612833 для чтения, но не работает для других, таких как управление иерархией, ограниченное чтение и любая другая роль, созданная пользователем (уровень разрешений). Вместо правильного имени я получаю: автоматически сгенерированный уровень доступа edda2384-2672-4e24-8f31-071d61a8c303
Любая помощь будет оценена.
ОК, вот пример кода, чтобы получить маску, которую я основал этот код на основе этого форума .
string sPermissionName = "Manage Hierarchy"; // if I use Read, Approve, Contribute, Full Control, it works!
string sListName = "testList";
string sGroupName = string.Format("{0}_ManageHierarchy", sListName);
// Create an aux group just to obtain the mask number later
using (SPUserGroup.UserGroup ug = new SPUserGroup.UserGroup())
{
ug.Credentials = new NetworkCredential("user", "pasword");
ug.Url = "http://testSite/_vti_bin/UserGroup.asmx";
ug.AddGroup(sGroupName, "testDomain\\user", "user", "testDomain\\user", "Manage Hierarchy test");
ug.AddGroupToRole(sPermissionName, sGroupName);
}
using (SPPermissions.Permissions per = new SPPermissions.Permissions())
{
per.Credentials = new NetworkCredential("user", "password");
per.Url = "http://testSite/_vti_bin/Permissions.asmx";
XmlNode perms = per.GetPermissionCollection(sListName, "list");
XmlNode n = perms.SelectSingleNode(string.Format("/*[local-name()='Permissions']/*[local-name()='Permission' " +
"and @MemberIsUser='False' and @GroupName='{0}']", sGroupName));
// Here we get the Mask for the role
int iMask = int.Parse(n.Attributes["Mask"].Value);
Console.WriteLine("The mask is:{0}", iMask); // Just to see the mask, I get 2129075183 for Manage Hierarchy
// Here I want to add some user to the list with the specified permission level
// But I get for example: Auto-generated Permission Level edda2384-2672-4e24-8f31-071d61a8c303
// Also, If later I execute the GetPermissionCollection, I see that the mask they got is: 2129075199 and not what I passed which was: 2129075183
per.AddPermission(sListName, "list", "testDomain\\user01", "user", iMask);
per.AddPermission(sListName, "list", "testDomain\\user02", "user", iMask);
}