Как добавить и удалить группу программно из списка разрешений в sharepoint 2010?
У меня есть следующий код для добавления группы с уровнем разрешений в список sharepoint
SPGroup Contribute = web.SiteGroups["Staff"];
SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"];
SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute);
ContributeRoleAssignment.RoleDefinitionBindings.Add(ContributeDefinition);
list.RoleAssignments.Add(ContributeRoleAssignment);
Который добавляет группу, но как это сделать, если я хочу отозвать разрешение на список для этой группы?
Заранее спасибо
1 ответ:
Если вам нужно удалить всю роль assignment вы можете сделать:
SPUser user = ...; list.RoleAssignments.Remove(user);Если вам нужно отменить привязку некоторых определений, вы можете сделать:
SPUser user = ...; list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);Если вы этого не хотите, пожалуйста, опишите подробнее.
Обновление: Вот пример кода, который я протестировал, и он работает. Он удалит роль вклада и добавит роль чтения в целевую группу. Обратите внимание, что у меня есть неанглоязычная версия 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(); } } }
Comments