#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:
Без написания кода вы можете создать папку для каждого сотрудника и установить разрешения для доступа к папке только для этого сотрудника и менеджеров.
Для менеджеров вы все равно можете создавать представления, в которых будут отображаться все элементы списка без папок.