Sharepoint Discussion Board版主特权?

时间:2010-05-14 15:25:31

标签: sharepoint wss-3.0

在sharepoint中,可以通过两种方式修改对讨论板的访问。

  1. 在“高级设置”中,您可以将项目级权限修改为具有贡献或更高权限的用户可以编辑/删除所有人的帖子,也可以只修改他们自己的帖子。
  2. 当然,您可以调整“只读”,“贡献”,“设计”或“完全控制”的权限。
  3. 我想为参与讨论的所有用户提供添加,编辑和删除自己条目的能力。但是,我想为少数几个用户提供编辑和删除所有人的权限。

    实现这一目标的最佳方法是什么?

    我猜可以编写一个EventReceiver并为每个用户切换“高级设置”。另一个方面是给版主提供设计权限,并删除该讨论板的设计功能。

    还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

ReadSecurity / WriteSecurity权限(第1点)应用于列表级别,而不是用户级别,因此尝试按用户划分这一点非常不方便。但是,虽然这些适用于该列表的所有用户,但提升权限的用户可以查看和编辑列表中的所有项目,无论此权限如何(前提是他们没有按照第2点的实用程序完全撤消其权限) 。我认为必要的权限是“管理列表”以获得此权限,但完全控制肯定会有效。

您可以通过修改每个项目上用户的实际权限级别来实现,但只需使用ReadSecurity / WriteSecurity就可以更清晰了。

答案 1 :(得分:1)

作为解决方法,我实现了一个事件处理程序(SPItemEventReceiver)来拦截更新(ItemUpdating)和删除(ItemDeleting)。

检查所有权: 它将当前用户与项目[“作者”]进行比较,以确定它们是否为所有者,从而授予他们编辑/删除的权限。

在主持人群组中: 如果不是这样,那么我为主持人添加了一个额外的用户组。一个关键是该组虽然没有正常使用,但必须具有分配给它的贡献者等权限。 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。

FROM: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>