Дать пользователям права на элемент в другом списке - PullRequest
0 голосов
/ 04 мая 2010

это то, над чем я работаю. У меня есть два списка:

  1. столбец пользователя и проект столбца, которому назначен пользователь.
  2. (библиотека): список всех проектов.

Мне было интересно, как с помощью каждой строки, которая создается в первом списке (таким образом, добавление пользователя и проекта), можно предоставлять разрешения пользователя для ссылки на этот проект во второй библиотеке (библиотеке проектов). Пример: ProjectLibrary:

  • Project1
  • Проект2
  • Project3

Первый список:

  • user1 project1
  • user1 project2
  • user2 project2
  • user2 project3
  • user3 project3

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

Спасибо большое!

Ответы [ 2 ]

0 голосов
/ 04 мая 2010

В SharePoint 2007 поддерживаются разрешения на уровне элементов.

Вы можете создать обработчик событий списка (SPItemEventReceiver). Каждый раз, когда элемент пользователя изменяется / добавляется, обработчик может обновлять соответствующий элемент проекта.

public class EventHanlder: SPItemEventReceiver
{
    public override void ItemAdded(SPItemEventProperties properties)
    {
        // collection user and project information from the item being updated.
        SPListItem item = properties.ListItem;
        SPUser user = new SPFieldUserValue(item.Web, item["UserFieldName"] as string).User;
        int projectId = new SPFieldLookupValue(item["ProjectFieldName"]).Id;

        // create role assignment for the user on the user item.
        SPRoleAssignment ra = new SPRoleAssignment(user);
        SPRoleDefinition rd = item.Web.RoleDefinitions.GetByType(SPRoleType.Reader);
        ra.RoleDefinitionBindings.Add(rd);
        ra.Update();

        // get the project item and update the role assignments.
        SPList projectList = // retrieve project list here...
        SPListItem projectItem = projectList.GetItemById(projectId);        
        projectItem.RoleAssignments.Add(ra);
    }
}

Это просто пример кода. Я не уверен на 100%, работает ли вещь с SPField *** Value так.

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

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

0 голосов
/ 04 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...