2010-05-14 3 views
0

sharepoint에서 토론 게시판에 대한 액세스 권한은 두 가지 방법으로 수정 된 것으로 보입니다.Sharepoint 토론 게시자 사회자 privelege?

  1. 고급 설정에서 기여 수준 이상의 권한을 가진 사용자가 모든 사용자의 소식을 편집/삭제할 수있는 항목 수준 권한을 수정할 수 있습니다.
  2. 물론 읽기 전용, 기고, 디자인 또는 모든 권한에 대한 권한을 조정할 수 있습니다.

토론에 기여한 모든 사용자에게 자신의 항목을 추가, 편집 및 삭제할 수있는 권한을 부여하고 싶습니다. 그러나 일부 사용자에게는 모든 사용자를 편집하고 삭제할 수있는 권한을 부여하고 싶습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

나는 각 사용자에 대해 EventReceiver를 작성하고 "고급 설정"을 전환 할 수 있다고 생각합니다. 또 다른 방법은 중재자에게 디자인 권한을 부여하고 해당 토론 게시판의 디자인 기능을 제거하는 것입니다.

다른 아이디어?

답변

1

ReadSecurity/WriteSecurity 사용 권한 (지점 # 1)은 사용자 수준이 아닌 목록 수준에 적용되므로 사용자별로이를 구분하려고 시도하는 것이 매우 어려울 수 있습니다. 그러나 이러한 목록의 모든 사용자에게 적용되지만 높은 권한을 가진 사용자는이 사용 권한과 관계없이 목록의 모든 항목을보고 편집 할 수 있습니다 (포인트 2의 유틸리티에 따라 사용 권한이 완전히 취소되지 않은 경우) . 필자는이 권한에 대해 필수 권한이 ​​"ManageLists"라고 믿지만 모든 권한이 확실히 작동합니다.

각 항목의 사용자에 대한 실제 사용 권한 수준을 수정하여 수행 할 수 있지만 단순히 ReadSecurity/WriteSecurity로 작업하는 것이 훨씬 깔끔합니다.

1

해결 방법으로 업데이트 (ItemUpdating)를 가로 채고 (ItemDeleting) 삭제하기 위해 이벤트 처리기 (SPItemEventReceiver)를 구현했습니다.

: 소유권에 대한 확인 : 그들에게 수정/삭제할 수있는 권한을 제공 소유자, 경우 그것은 항목 [ "저자"]에 현재 사용자를 비교가 확인합니다.

: 중재자 그룹에 속합니다. : 이것이 사실이 아니라면 중재자를위한 추가 사용자 그룹을 추가했습니다. 한 가지 중요한 점은 그룹은 일반적으로 사용되지는 않지만 기여자와 같은 권한이 있어야한다는 것입니다. 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> 
관련 문제