Sharepoint Обсуждения на форуме модератора privelege? - PullRequest
0 голосов
/ 14 мая 2010

В sharepoint доступ к дискуссионным доскам, по-видимому, можно изменить двумя способами.

  1. В расширенных настройках вы можете изменить Разрешения на уровне элемента, чтобы пользователи, которые предоставили или имеют более высокое разрешение, могли редактировать / удалять сообщения всех пользователей или только свои собственные.
  2. И, конечно, вы можете настроить привилегии только для чтения, Contribute, Design или Full Control.

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

Каков наилучший способ сделать это?

Я предполагаю, что можно написать EventReceiver и переключать «расширенные настройки» для каждого пользователя. Другой способ - предоставить модераторам право на разработку и удалить возможности дизайна для этой дискуссионной доски.

Есть еще идеи?

Ответы [ 2 ]

1 голос
/ 17 мая 2010

В качестве обходного пути я реализовал обработчик событий (SPItemEventReceiver) для перехвата обновлений (ItemUpdating) и удаления (ItemDeleting).

: Проверка собственности : Он сравнивает текущего пользователя с элементом ["Автор"], чтобы определить, являются ли они владельцем, что дает им разрешение на редактирование / удаление.

: В группе модераторов : Если это не так, то я добавил дополнительную группу пользователей для модераторов. Одним из ключей является то, что группе, хотя она и не используется нормально, должны быть назначены такие полномочия, как Contributor. SPWeb имеет IsCurrentUserMemberOfGroup для определения того, принадлежит ли пользователь группе модераторов.

//----------------------------------
//here is enough to get you started.
//----------------------------------

class DiscussionBoardItemCreated : SPItemEventReceiver
{
  public override void ItemUpdating(SPItemEventProperties properties)
  {
     //check ContentType 
     //  -- properties.AfterProperties["ContentType"]
     //are they the owner 
     //  -- item["Author"]
     //are they in a particular user group 
     //  -- web.IsCurrentUserMemberOfGroup(web.Groups["MyModeratorGroup"].ID)

     //properties.Cancel = true -OR- false;
     //properties.ErrorMessage = "" -OR- "No access";
  }
}

Кроме того, вам нужно будет использовать elements.xml.

ОТ: http://koenvosters.wordpress.com/2009/07/31/howto-create-an-event-handler-for-sharepointmoss-2007/

<?xml version=“1.0“ encoding=“utf-8“ ?>
<Elements xmlns=“http://schemas.microsoft.com/sharepoint/“>
   <Receivers ListTemplateId=“100“>
      <Receiver>
         <Name>AddingEventHandler</Name>
         <Type>ItemAdding</Type>
         <SequenceNumber>10000</SequenceNumber>
         <Assembly>MyEventHandler, Version=1.0.0.0, Culture=neutral,PublicKeyToken=ca176e059473d6b1</Assembly>
         <Class>MyEventHandler.DemoEventHandler</Class>
         <Data></Data>
         <Filter></Filter>
      </Receiver>
   </Receivers>
</Elements>
1 голос
/ 14 мая 2010

Разрешения ReadSecurity / WriteSecurity (точка # 1) применяются на уровне списка, а не на уровне пользователя, поэтому было бы крайне неловко пытаться разделить это на пользователя. Однако, хотя они применяются ко всем пользователям для этого списка, пользователи с повышенными привилегиями могут просматривать и редактировать все элементы в списке независимо от этого разрешения (при условии, что у них не были полностью отменены их разрешения в соответствии с утилитой пункта № 2) , Я полагаю, что для этой привилегии необходимо разрешение «ManageLists», но полный контроль определенно сработает.

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

...