Ulteam.SharePoint

Permissions Class

Namespace: Ulteam.SharePoint

Description

Класс по работе с правами на элементе списка SharePoint

Methods

Name Description
AddRoleAssignment(SPListItem Item, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Добавляет права пользователю или группе Principal на элемент списка Item.
Item: Элемент списка
Principal: Пользователь или группа
RoleDefinition: Определение роли
AddRoleAssignment(SPWeb Web, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Добавляет права пользователю или группе Principal на узел.
Web: Узел
Principal: Пользователь или группа
RoleDefinition: Определение роли
AddRoleAssignment(SPList List, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Добавляет права пользователю или группе Principal на список.
List: List
Principal: Пользователь или группа
RoleDefinition: Определение роли
AddRoleAssignment(SPListItem Item, SPPrincipal Principal, SPRoleType RoleType) Добавляет права пользователю или группе Principal на элемент списка Item.
Item: Элемент списка
Principal: Пользователь или группа
RoleType: Стандартный тип роли.
AddRoleAssignment(SPWeb Web, SPPrincipal Principal, SPRoleType RoleType) Добавляет права пользователю или группе Principal на узел.
Web: Узел
Principal: Пользователь или группа
RoleType: Стандартный тип роли.
AddRoleAssignment(SPList List, SPPrincipal Principal, SPRoleType RoleType) Добавляет права пользователю или группе Principal на список.
List: Список
Principal: Пользователь или группа
RoleType: Стандартный тип роли.
AddRoleAssignment(SPListItem Item, SPPrincipal Principal, String RoleDefinitionName) Добавляет права пользователю или группе Principal на элемент списка Item.
Item: Элемент списка
Principal: Пользователь или группа
RoleDefinitionName: Название роли. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleAssignment(SPWeb Web, SPPrincipal Principal, String RoleDefinitionName) Добавляет права пользователю или группе Principal на узел.
Web: Узел
Principal: Пользователь или группа
RoleDefinitionName: Название роли. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleAssignment(SPList List, SPPrincipal Principal, String RoleDefinitionName) Добавляет права пользователю или группе Principal на список.
List: Список
Principal: Пользователь или группа
RoleDefinitionName: Название роли. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPListItem Item, SPPrincipal Principal, String DeleteRoleDefinitionName, String AddRoleDefinitionName) Замена прав пользователя или группы Principal на элемент списка Item.
Item: Элемент списка
Principal: Пользователь или группа
DeleteRoleDefinitionName: Название роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinitionName: Название роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPWeb Web, SPPrincipal Principal, String DeleteRoleDefinitionName, String AddRoleDefinitionName) Замена прав пользователя или группы Principal на узел.
Web: Узел
Principal: Пользователь или группа
DeleteRoleDefinitionName: Название роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinitionName: Название роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPList List, SPPrincipal Principal, String DeleteRoleDefinitionName, String AddRoleDefinitionName) Замена прав пользователя или группы Principal на список.
List: Список
Principal: Пользователь или группа
DeleteRoleDefinitionName: Название роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinitionName: Название роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPListItem Item, SPPrincipal Principal, SPRoleDefinition DeleteRoleDefinition, SPRoleDefinition AddRoleDefinition) Замена прав пользователя или группы Principal на элемент списка Item.
Item: Элемент списка
Principal: Пользователь или группа
DeleteRoleDefinition: Определение роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinition: Определение роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPWeb Web, SPPrincipal Principal, SPRoleDefinition DeleteRoleDefinition, SPRoleDefinition AddRoleDefinition) Замена прав пользователя или группы Principal на узел.
Web: Узел
Principal: Пользователь или группа
DeleteRoleDefinition: Определение роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinition: Определение роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
ChangeRoleAssignment(SPList List, SPPrincipal Principal, SPRoleDefinition DeleteRoleDefinition, SPRoleDefinition AddRoleDefinition) Замена прав пользователя или группы Principal на список.
List: Список
Principal: Пользователь или группа
DeleteRoleDefinition: Определение роли для удаления. Например: “Совместная работа”, “Чтение” и т.д.
AddRoleDefinition: Определение роли для добавления. Например: “Совместная работа”, “Чтение” и т.д.
GetRoleAssignment(SPListItem Item, SPPrincipal Principal) Получение установленных прав пользователя или группы Principal на элемент списка Item. Если прав нет, то возвращает пустой SPRoleAssignment.
Item: Элемент списка.
Principal: Пользователь или группа.
GetRoleAssignment(SPWeb Web, SPPrincipal Principal) Получение установленных прав пользователя или группы Principal на узел. Если прав нет, то возвращает пустой SPRoleAssignment.
Web: Узел.
Principal: Пользователь или группа.
GetRoleAssignment(SPList List, SPPrincipal Principal) Получение установленных прав пользователя или группы Principal на список. Если прав нет, то возвращает пустой SPRoleAssignment.
List: Список.
Principal: Пользователь или группа.
GetPrincipals(SPListItem Item, Boolean ExceptRestrictedRead) Получение всех Principal’ов у элемента списка Item.
Item: Элемент списка
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetPrincipals(SPWeb Web, Boolean ExceptRestrictedRead) Получение всех Principal’ов у узла.
Web: Узел
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetPrincipals(SPList List, Boolean ExceptRestrictedRead) Получение всех Principal’ов у списка.
List: Список
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetPrincipalsExceptList(SPListItem Item, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Получение всех Principal’ов у элемента списка Item. Не учитываются Principal’ы, у которых есть права только из списка ExceptRoleDefinitionNameList
Item: Элемент списка
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetPrincipalsExceptList(SPWeb Web, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Получение всех Principal’ов у узла. Не учитываются Principal’ы, у которых есть права только из списка ExceptRoleDefinitionNameList
Web: Узел.
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetPrincipalsExceptList(SPList List, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Получение всех Principal’ов у списка. Не учитываются Principal’ы, у которых есть права только из списка ExceptRoleDefinitionNameList
List: Список.
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
ExceptRestrictedRead: Если true, то не учитываются Principal’ы только с уровнем разрешений “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
GetRoleAssignmentsExceptList(SPListItem Item, List<String> ExceptRoleDefinitionNameList) Получение всех установленных прав на элемент списка Item. Не учитываются RoleAssignment’ы, у которых есть RoleDefinition.Name только из списка ExceptRoleDefinitionNameList
Item: Элемент списка
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
GetRoleAssignmentsExceptList(SPWeb Web, List<String> ExceptRoleDefinitionNameList) Получение всех установленных прав на узел. Не учитываются RoleAssignment’ы, у которых есть RoleDefinition.Name только из списка ExceptRoleDefinitionNameList
Web: Узел
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
GetRoleAssignmentsExceptList(SPList List, List<String> ExceptRoleDefinitionNameList) Получение всех установленных прав на список. Не учитываются RoleAssignment’ы, у которых есть RoleDefinition.Name только из списка ExceptRoleDefinitionNameList
List: Список
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо игнорировать.
GetRoleDefinition(SPWeb Web, String RoleName) Получение SPRoleDefinition по названию роли.
Web: Узел, на котором необходимо совершить действие с правами на объект SharePoint.
RoleName: Название роли. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
GetRoleDefinition(SPWeb Web, SPRoleType RoleType) Получение RoleDefinition по типу стандартной роли.
Web: Узел, на котором необходимо совершить действие с правами на объект SharePoint.
RoleType: Тип стандартной роли
DeleteRoleDefinitionBinding(SPRoleAssignment RoleAssignment, SPRoleDefinition RoleDefinition) Удаление роли RoleDefinition из коллекции ролей RoleDefinitionBindings для установленных прав RoleAssignment на элемент списка.
RoleAssignment: Установленные права на элемент списка
RoleDefinition: Роль для удаления
DeletePermissionsByRoleDefinition(SPListItem Item, SPRoleDefinition RoleDefinition) Удаление всех прав определенной роли RoleDefinition из элемента списка Item
Item: Элемент списка
RoleDefinition: Роль для удаления
DeletePermissionsByRoleDefinition(SPWeb Web, SPRoleDefinition RoleDefinition) Удаление всех прав определенной роли RoleDefinition из узла
Web: Узел.
RoleDefinition: Роль для удаления
DeletePermissionsByRoleDefinition(SPList List, SPRoleDefinition RoleDefinition) Удаление всех прав определенной роли RoleDefinition из списка
List: Список.
RoleDefinition: Роль для удаления
DeletePermissionsByRoleTitle(SPListItem Item, String RoleTitle) Удаление всех прав определенного типа RoleTitle из элемента списка Item
Item: Элемент списка
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionsByRoleTitle(SPWeb Web, String RoleTitle) Удаление всех прав определенного типа RoleTitle из узла
Web: Узел
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionsByRoleTitle(SPList List, String RoleTitle) Удаление всех прав определенного типа RoleTitle из списка
List: Список
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionsByRoleType(SPListItem Item, SPRoleType RoleType) Удаление всех прав определенного типа RoleType из элемента списка Item
Item: Элемент списка
RoleType: Тип стандартной роли для удаления
DeletePermissionsByRoleType(SPWeb Web, SPRoleType RoleType) Удаление всех прав определенного типа RoleType из узла
Web: Узел.
RoleType: Тип стандартной роли для удаления
DeletePermissionsByRoleType(SPList List, SPRoleType RoleType) Удаление всех прав определенного типа RoleType из списка
List: Список.
RoleType: Тип стандартной роли для удаления
DeletePermissionByRoleDefinition(SPListItem Item, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Удаление прав пользователя или группы Principal определенной роли RoleDefinition из элемента списка Item.
Item: Элемент списка
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleDefinition: Роль для удаления
DeletePermissionByRoleDefinition(SPWeb Web, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Удаление прав пользователя или группы Principal определенной роли RoleDefinition из узла.
Web: Узел
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleDefinition: Роль для удаления
DeletePermissionByRoleDefinition(SPList List, SPPrincipal Principal, SPRoleDefinition RoleDefinition) Удаление прав пользователя или группы Principal определенной роли RoleDefinition из списка.
List: Список
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleDefinition: Роль для удаления
DeletePermissionByRoleTitle(SPListItem Item, SPPrincipal Principal, String RoleTitle) Удаление прав пользователя или группы Principal определенного типа RoleTitle из элемента списка Item
Item: Элемент списка
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionByRoleTitle(SPWeb Web, SPPrincipal Principal, String RoleTitle) Удаление прав пользователя или группы Principal определенного типа RoleTitle из узла
Web: Узел.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionByRoleTitle(SPList List, SPPrincipal Principal, String RoleTitle) Удаление прав пользователя или группы Principal определенного типа RoleTitle из списка
List: Список.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleTitle: Название роли (в уровнях разрешений site collection) для удаления. Возможные значения: Совместная работа, Изменение, Чтение и т.д.
DeletePermissionByRoleType(SPListItem Item, SPPrincipal Principal, SPRoleType RoleType) Удаление прав пользователя или группы Principal определенного типа RoleType из элемента списка Item
Item: Элемент списка
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleType: Тип стандартной роли для удаления
DeletePermissionByRoleType(SPWeb Web, SPPrincipal Principal, SPRoleType RoleType) Удаление прав пользователя или группы Principal определенного типа RoleType из узла
Web: Узел.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleType: Тип стандартной роли для удаления
DeletePermissionByRoleType(SPList List, SPPrincipal Principal, SPRoleType RoleType) Удаление прав пользователя или группы Principal определенного типа RoleType из списка
List: Список.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
RoleType: Тип стандартной роли для удаления
DeletePermissions(SPListItem Item, SPPrincipal Principal, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из элемента списка Item.
Item: Элемент списка
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
DeletePermissions(SPWeb Web, SPPrincipal Principal, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из узла.
Web: Узел.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
DeletePermissions(SPList List, SPPrincipal Principal, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из списка.
List: Список.
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
DeletePermissionsExceptList(SPListItem Item, SPPrincipal Principal, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из элемента списка Item, кроме ExceptRoleDefinitionList.
Item: Элемент списка
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо оставить.
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
DeletePermissionsExceptList(SPWeb Web, SPPrincipal Principal, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из узла, кроме ExceptRoleDefinitionList.
Web: Узел
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо оставить.
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
DeletePermissionsExceptList(SPList List, SPPrincipal Principal, List<String> ExceptRoleDefinitionNameList, Boolean ExceptRestrictedRead) Удаление всех прав пользователя или группы Principal из списка, кроме ExceptRoleDefinitionList.
List: Список
Principal: Пользователь или группа. Параметр может быть следующих типов: Principal, User, Group
ExceptRoleDefinitionNameList: Список названий уровней разрешений, которые необходимо оставить.
ExceptRestrictedRead: Если true, то удалятся все уровни разрешений, кроме “Ограниченный доступ” (или “Restricted Read” для англоязычных сайтов). Значение по умолчанию: true
IsEquivalent(SPPrincipal Principal, SPPrincipal ComparePrincipal) Сравнение Principal’ов по Title’ам без учета регистра
Principal: Пользователь или группа
ComparePrincipal: Пользователь или группа

Samples


/// <summary>
/// Добавляет права пользователю или группе. 
/// </summary>
/// <param name="item">Элемент списка</param>
/// <param name="principal">SPGroup or SPUser</param>
private void AddPermissions(SPListItem item, SPPrincipal principal)
{
    // добавление прав "Совместная работа" группе "Ulteam Site - посетители" на элемент спика item.
    item.AddRoleAssignment(principal, "Совместная работа");

    // то же самое, только используя RoleDefinition
    SPRoleDefinition roleDefinition = item.Web.GetRoleDefinition("Совместная работа");
    item.AddRoleAssignment(principal, roleDefinition);
}

/// <summary>
/// Замена прав пользователя или группы. 
/// </summary>
/// <param name="item">Элемент списка</param>
/// <param name="principal">SPGroup or SPUser</param>
private void ChangePermissions(SPListItem item, SPPrincipal principal)
{
    // замена прав у группы с "Совместная работа" на "Чтение"
    item.ChangeRoleAssignment(principal, "Совместная работа", "Чтение");

    // то же самое, используя RoleDefinition'ы
    SPRoleDefinition deleteRoleDefinition = item.Web.GetRoleDefinition("Совместная работа");
    SPRoleDefinition addRoleDefinition = item.Web.GetRoleDefinition("Чтение");

    item.ChangeRoleAssignment(principal, deleteRoleDefinition, addRoleDefinition);
}

/// <summary>
/// Удаление прав определенного типа у всех пользователей или групп. 
/// </summary>
/// <param name="item">Элемент списка</param>
private void DeleteAllPermissions(SPListItem item)
{
    // удаление прав "Совместная работа" у всех пользователей и групп.
    item.DeletePermissionsByRoleTitle("Совместная работа");

    // то же самое, используя RoleDefinition
    SPRoleDefinition roleDefinition = item.Web.GetRoleDefinition("Совместная работа");
    item.DeletePermissionsByRoleDefinition(roleDefinition);

    // то же самое, используя RoleType
    item.DeletePermissionsByRoleType(SPRoleType.Contributor);
}

/// <summary>
/// Удаление всех прав у пользователя или группы. 
/// </summary>
/// <param name="item">Элемент списка</param>
/// <param name="principal">SPGroup or SPUser</param>
private void DeleteAllPermissionsByPrincipal(SPListItem item, SPPrincipal principal)
{
    // удаление всех уровней разрешений для группы, кроме "Ограниченный доступ"
    item.DeletePermissions(principal);

    List<string> roleDefinitionNameList = new List<string>
    {
        "Чтение",
        "Только просмотр"
    };

    // удаление всех уровней разрешений для группы, кроме "Чтение", "Только просмотр" и "Ограниченный доступ"
    item.DeletePermissionsExceptList(principal, roleDefinitionNameList);
}

/// <summary>
/// Удаление определенных прав пользователя или группы. 
/// </summary>
/// <param name="item">Элемент списка</param>
/// <param name="principal">SPGroup or SPUser</param>
private void DeletePermissionByPrincipal(SPListItem item, SPPrincipal principal)
{
    // удаление прав "Совместная работа" у всех пользователей и групп.
    item.DeletePermissionByRoleTitle(principal, "Совместная работа");

    // то же самое, используя RoleDefinition
    SPRoleDefinition roleDefinition = item.Web.GetRoleDefinition("Совместная работа");
    item.DeletePermissionByRoleDefinition(principal, roleDefinition);

    // то же самое, используя RoleType
    item.DeletePermissionByRoleType(principal, SPRoleType.Contributor);
}

/// <summary>
/// Получение всех пользователей и групп, имеющих права на элемент списка.
/// </summary>
/// <param name="item">Элемент списка</param>
private List<SPPrincipal> GetPrincipalsExceptList(SPListItem item)
{
    List<string> roleDefinitionNameList = new List<string>
    {
        "Чтение",
        "Только просмотр"
    };

    // получение всех пользователей и групп, 
    // у которых есть какие-нибудь уровни разрешений на элемент Item, 
    // кроме "Чтение", "Только просмотр" и "Ограниченный доступ"
    return item.GetPrincipalsExceptList(roleDefinitionNameList);
}

/// <summary>
/// В этом примере все права (кроме прав "Полный доступ") у всех пользователей и групп заменяются на права "Чтение".
/// Плюс добавляются отдельно права "Совместная работа" для создателя элемента списка.
/// </summary>
/// <param name="item">Элемент списка</param>
private void SetPermissions(SPListItem item)
{
    SPFieldUserValue authorValue = item.GetValueAsUser("Author");
    SPPrincipal authorPrincipal = item.Web.SiteUsers.GetByID(authorValue.LookupId);

    SPRoleDefinition editorRoleDefinition = item.Web.GetRoleDefinition("Совместная работа");
    SPRoleDefinition readerRoleDefinition = item.Web.GetRoleDefinition("Чтение");

    // получаем список всех пользователей и групп с правами, кроме ограниченного доступа
    List<SPPrincipal> principalList = item.GetPrincipals();

    // добавляем всем права на чтение
    foreach (SPPrincipal principal in principalList)
        item.AddRoleAssignment(principal, readerRoleDefinition);
    
    // удаляем права у всех остальных пользователей или групп, кроме прав "Чтение" и "Полный доступ"
    List<string> exceptRoleDefinitionList = new List<string>
    {
        "Чтение",
        "Полный доступ"
    };
    foreach (SPPrincipal principal in principalList)
        item.DeletePermissionsExceptList(principal, exceptRoleDefinitionList, true);

    // добавляем инициатору отдельные права "Совместная работа"
    item.AddRoleAssignment(authorPrincipal, editorRoleDefinition);
}

Updated: