2010-05-14 67 views
0

在sharepoint中,讨论板的访问似乎被两种方式修改。Sharepoint讨论版主持人privelege?

  1. 在高级设置,您可以修改项目级别的权限,用户已经贡献或更高的权限既可以修改/删除大家的帖子,或者只有自己。
  2. 当然,您可以调整只读,贡献,设计或完全控制的权限。

我想给所有有助于讨论的用户添加,编辑和删除他们自己的条目。但是,我想给少数用户选择编辑和删除所有人的权限。

完成此操作的最佳方法是什么?

我猜测可以写一个EventReceiver并为每个用户切换“高级设置”。另一种方法是给版主赋予设计特权,并删除该讨论板的设计功能。

还有其他想法吗?

回答

1

ReadSecurity/WriteSecurity权限(点#1)适用于列表级别而不是用户级别,因此尝试在用户基础上分配此权限会非常尴尬。但是,虽然这些适用于该列表的所有用户,但提升权限的用户可以查看和编辑列表中的所有项目,而不管此权限如何(只要他们没有根据点#2的实用程序完全撤销权限) 。我相信必要的许可是“ManageLists”,但是Full Control肯定会起作用。

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

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>