поэлементные разрешения в библиотеке документов sharepoint - PullRequest
1 голос
/ 12 октября 2011

Я создал библиотеку документов с поддержкой электронной почты в sharepoint 2007. Наш клиент использует отчеты Crystal и сохраняет отчеты в этом документе. Библиотека. Сейчас в этой библиотеке хранится около 900 документов, и клиент просит меня предоставить разрешения для каждого элемента. Они именуют файлы, используя идентификатор сотрудника. И они хотят, чтобы эти файлы были видны надлежащему сотруднику и его / ее секретарю.

Может кто-нибудь помочь мне, как достичь этого программно? Есть ли правильный способ сделать это?

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Без написания кода вы можете создать папку для каждого сотрудника и установить права доступа к папкам, которые будут доступны только этому сотруднику и менеджерам.

Для менеджеров вы все равно можете создавать представления, которые будут отображать все элементы списка без папок.

0 голосов
/ 13 октября 2011

Вы можете создать обработчик событий , который нарушит наследование прав доступа к файлу и изменит требуемые разрешения.

Другой вариант - переместить файл в папку (или даже в отдельную библиотеку документов).), который предварительно настроен с необходимыми разрешениями.

Первый вариант проще реализовать, но управление безопасностью может стать ... грязным.

Здесь некоторый код, который поможет вам взломать и установить права доступа к документу.

public string ItemPermission(string SitePath)
    {
        string ReturnVal = "";

        try
        {
            SPSite WebApp = new SPSite(SitePath);
            SPWeb Site = WebApp.OpenWeb();
            SPList list = Site.Lists["TestDocLib"];
            SPListItem item = list.Items[0];
            SPRoleDefinition RoleDefinition = Site.RoleDefinitions.GetByType(SPRoleType.Contributor);
            SPRoleAssignment RoleAssignment = new SPRoleAssignment("<domain>\\<user>", "email", "name", "notes");

            RoleAssignment.RoleDefinitionBindings.Add(RoleDefinition);

            if(!item.HasUniqueRoleAssignments)
            {
                item.BreakRoleInheritance(true);                
            }

            item.RoleAssignments.Add(RoleAssignment);
            item.Update();
        }
        catch (Exception ex)
        {
            ReturnVal += "Permission not set, reason: " + ex.Message;
        }
        return ReturnVal; 
    }
...