разрешения по элементам в библиотеке документов sharepoint

#sharepoint #sharepoint-2007 #share

#sharepoint #sharepoint-2007 #Поделиться

Вопрос:

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

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

Спасибо,

Ответ №1:

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

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

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

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

 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; 
    }
  

Комментарии:

1. Если я использую этот код, как я могу предоставить уникальные разрешения примерно 900 пользователям?

2. Я бы поместил данные в базу данных для управления задействованными перестановками и вызвал вызов, который получает данные, которые я хочу перебрать.

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

Ответ №2:

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

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