Как программно добавить и удалить группу из списка разрешений в sharepoint 2010? - PullRequest
2 голосов
/ 08 февраля 2011

У меня есть следующий код для добавления группы с уровнем разрешений в список точек доступа

SPGroup Contribute = web.SiteGroups["Staff"];
SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"];
SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute);
ContributeRoleAssignment.RoleDefinitionBindings.Add(ContributeDefinition);
list.RoleAssignments.Add(ContributeRoleAssignment);

, который добавляет группу, но как мне это сделать, если я хочу отозвать разрешение в спискедля этой группы?

заранее спасибо

1 Ответ

6 голосов
/ 08 февраля 2011

Если вам нужно удалить всю роль, вы можете сделать:

SPUser user = ...;
list.RoleAssignments.Remove(user);

Если вам нужно отменить некоторую привязку определения, вы можете сделать:

SPUser user = ...;
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);

Если вы этого не хотите, пожалуйста, опишите более подробно.

UPDATE: Вот пример кода, который я протестировал, и он работает. Это удалит роль Contribute и добавит роль Read в целевую группу. Обратите внимание, что у меня не англоязычная версия Sharepoint, поэтому убедитесь, что названия ролей.

static void Main(string[] args)
{
  using (SPSite site = new SPSite("site_url"))
  {
    using (SPWeb web = site.OpenWeb())
    {
      SPList list = web.GetList(web.Url + "/" + "list_url");
      SPGroup group = web.SiteGroups["target_group_name"];
      SPRoleDefinition contributeDef = web.RoleDefinitions["Contribute"];
      SPRoleDefinition readDef = web.RoleDefinitions["Read"];
      SPRoleAssignment contributeRole = new SPRoleAssignment(group);
      contributeRole.RoleDefinitionBindings.Add(contributeDef);
      if (!list.HasUniqueRoleAssignments) // required to make role change
        list.BreakRoleInheritance(true);
      var assignmentForGroup = list.RoleAssignments.GetAssignmentByPrincipal(group);
      assignmentForGroup.RoleDefinitionBindings.Remove(contributeDef);
      assignmentForGroup.RoleDefinitionBindings.Add(readDef);
      assignmentForGroup.Update();
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...