2008/03/28 19:35

アイテムの非公開(本人以外権限なしにする)、아이템의 권한을 본인만 허용(비공개아이템작성법)

이벤트리시버의 오버라이드 메서드에서....
イベントレシーバーのオーバーライドメソッドで。。。

     SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite site = new SPSite(item.Web.Site.ID))
                    {
                        SPWeb web = site.OpenWeb(item.Web.ID);
                        SPListItem impitem = web.Lists[item.ParentList.ID].GetItemById(item.ID);

                        impitem.BreakRoleInheritance(false);


                        //すでに権限継承が外されたときのため全部削除
                        //이미 권한상속이 해제되었을때, 모든 권한을 삭제
                        SPRoleAssignmentCollection current_roles = impitem.RoleAssignments;

                        for (int i = 0; i < current_roles.Count; i++)
                        {
                            current_roles.Remove(0);
                        }

                        //現在ユーザのユーザ役割クラスをインスタンス化
                        //현재유저의 유저역할을 인스턴스화
                        SPRoleAssignment ownerRoleAssignment = new SPRoleAssignment(targetuser, "", targetuser, "");
                        //管理者権限を割り当て
                        //관리자 권한을 할당
                        ownerRoleAssignment.RoleDefinitionBindings.Add(
                            web.RoleDefinitions.GetByType(SPRoleType.Administrator));

                        //現在のアイテムにユーザ役割を追加
                        //현재 아이템의 권한정보에 유저역할을 추가
                        impitem.RoleAssignments.Add(ownerRoleAssignment);
                    }
                });

これでアイテムは非公開になり登録したユーザは見せたいユーザを自由に選べる。
이걸로 아이템은 비공개로 되고 유저는 아이템을 보이고 싶은 유저를 자유롭게 설정가능...


カスタムフィールドも作って組み合わせるとさらに強力なツールになる。。。

Trackback 0 Comment 0