динамическое изменение разрешений пользователей - PullRequest
0 голосов
/ 01 апреля 2010

Я проектирую систему на SharePoint. Есть список одобрения для предметов. Участники могут утверждать, отклонять и редактировать элементы. Один из списка утверждения должен заполнить поле «назначено» в элементе при его утверждении. Пользователь, добавленный в поле «назначено», должен иметь возможность редактировать содержимое элемента после его утверждения. Итак, как я могу дать разрешение на редактирование пользователям после того, как они добавлены в поле определенного элемента?

Ситуация такова:

список утверждений: A, B, C (редактировать, просматривать разрешение)

пользователи: x, y, z .... (без разрешения, просмотр после утверждения)

предметов: предмет1, предмет2, предмет3 ....

предметы невидимы. A подтвердил item1 и добавил X в поле «назначено». Это означает, что этот предмет находится под ответственностью X. Но у Х нет разрешения на редактирование. мы не можем дать разрешение на редактирование X для каждого элемента. Он должен редактировать элементы после того, как он будет записан в поле «назначено».

Как я могу создать этот рабочий процесс в SharePoint? Пожалуйста, нужна срочная помощь.

Ответы [ 2 ]

1 голос
/ 01 апреля 2010

как упоминал Пол Лукас, вы можете сделать это, используя приемник событий ItemAdded и ItemUpdated и подобные методы, с дополнительной обработкой исключений

public override void ItemUpdated(SPItemEventProperties properties)
{
    base.ItemUpdated(properties);
    SPListItem item = properties.ListItem;
    SetRights(item, ((SPFieldUserValue)item["AssignedTo"]).User, SPRoleType.Reader);                     
}

private void SetRights(SPListItem item, SPPrincipal principal, SPRoleType role)
{
    SPRoleDefinition RoleDefinition = item.ParentList.ParentWeb.RoleDefinitions.GetByType(role);
    SPRoleAssignment RoleAssignment = new SPRoleAssignment(principal);
    RoleAssignment.RoleDefinitionBindings.Add(RoleDefinition);

    if (!item.HasUniqueRoleAssignments)
    {
        item.BreakRoleInheritance(true);
    }
    item.RoleAssignments.Add(RoleAssignment);
    item.SystemUpdate(false);
}
1 голос
/ 01 апреля 2010

Не на 100% уверен, что совершенно ясно, чего вы пытаетесь достичь, но ...

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

Я бы сделал так, чтобы создать обработчик событий для списка элементов, который запускается при обновлении / утверждении элемента списка и т. Д. Он будет: -

  1. Считать значение в присвоенном поле
  2. Разорвать наследование прав на элемент списка
  3. Назначение пользователю в назначенных для поля прав на редактирование этого элемента.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...