Разрешения SharePoint для определенной группы - PullRequest
0 голосов
/ 21 декабря 2010

Я пытаюсь установить, имеет ли определенная группа доступ для чтения к определенному семейству сайтов.

Я пытался в течение полутора дней, но мне кажется, что я нашел три половины разных решений!

Фрагменты кода, которые у меня есть на данный момент:

using (SPSite site = new SPSite(this.GenerateAbsoluteUri(moduleCode, academicYear)))
{
    using (SPWeb web = site.OpenWeb())
    {
        for (int i = web.SiteGroups.Count - 1; i >= 0; i--)
        {
            SPGroup group = web.SiteGroups[i];

            if (Regex.IsMatch(group.Name, theGroupImLookingFor))
            {

, но что тогда?!

Большинство моих результатов в Google говорят мне о ролях, но я не знаюзнать, как связать роль с группой.

Пожалуйста, помогите!

Ответы [ 2 ]

2 голосов
/ 23 декабря 2010

Чтобы назначить разрешение для пользователя (учетной записи) или группы SharePoint, есть некоторые объекты, на которые мы должны смотреть в определенном порядке. Первое, что нам нужно сделать, - это получить участника безопасности, которому мы хотим назначить роль (SPUser или SPGroup). Следующее, что нам нужно сделать, это получить фактическое разрешение (роль), которое мы хотим назначить (например: Чтение, Полный доступ и т. Д.). Затем нам нужно создать объект SPRoleAssignment и в конструкторе передать его в SPUser или SPGroup (субъект безопасности), которому мы хотим назначить разрешения. Теперь нам нужно добавить определение роли в коллекцию RoleDefinitionBindings объекта назначения роли. Затем нам нужно добавить фактическое назначение ролей в веб (сайт) и обновить веб. Ниже приведен полный код lisitng.

// Create the site that contains our list
using(SPSite oSite = new SPSite("<<my site url>>"))
{
    // Open the web object
  using(SPWeb oWeb = oSite.OpenWeb())
  {

    // Get the group that we want to add the user to
    SPGroup oGroup = oWeb.Groups["<<group name>>"];

    // Get the role definition we want to assign ex: Full Control
    SPRoleDefinition oRole = oWeb.RoleDefinitions["<< role name>>"];

    // Create the role assignment object
    SPRoleAssignment oRoleAssignment = new SPRoleAssignment(oGroup);

    // Add the role definition to the role assignemnt. 
    // This will assign the specific permission to the security principal for this role          assignemnt.
    oRoleAssignment.RoleDefinitionBindings.Add(oRole);

     // Now we need to add the role assignment to the web
     oWeb.RoleAssignments.Add(oRoleAssignment);

    // Now update the web
    oWeb.Update();
   }
}
0 голосов
/ 21 декабря 2010

Вот фрагменты из моего собственного кода (Sharepoint 2010).Создание роли:

SPRoleDefinition network_role = new SPRoleDefinition();
                network_role.BasePermissions = SPBasePermissions.AddListItems |
                    SPBasePermissions.BrowseDirectories |
                    SPBasePermissions.EditListItems |
                    SPBasePermissions.DeleteListItems;
                network_role.Name = "Network - Project Member";
                network_role.Description = "Provides permissions required for a member of a project.";

                web.RoleDefinitions.Add(network_role);

Добавление роли в группу:

var assign = new SPRoleAssignment(oweb.SiteGroups["Network Project - " + item.Code]);
assign.RoleDefinitionBindings.Add(network_role);
...