ユーザー権限に応じてサイトに表示するメニューを制限するカスタマイズ
弊社によくお寄せいただくカスタマイズのお問い合わせとして、以下のようなものがあります。
・サイド リンク バーにある「すべてのサイトコンテンツの表示」を非表示にしたい!
・サイトの操作メニューを管理者権限以外のユーザーに非表示にしたい!
・サイド リンク バーそのものを閲覧者には非表示にしたい!
などなど...
このようなご要望は、実はコードを書かなくても、SPD を使用することで実現できる方法があるのです・・・!
それが、今回ご紹介する PermissionsString 属性 です。
PermissionsString 属性について
PermissionsString 属性は、Web サーバー コントロールである SPSecurityTrimmedControl 要素で使用でき、この属性で指定された権限を満たすユーザーに対して、SPSecurityTrimmedControl コントロールに配置された子要素を表示することが可能です。
タイトル : SPSecurityTrimmedControl クラス (Microsoft.SharePoint.WebControls)
タイトル : SPSecurityTrimmedControl.PermissionsString プロパティ (Microsoft.SharePoint.WebControls)
カスタマイズ例
以下に、PermissionString 属性を使用した SharePoint Designer によるカスタマイズをご紹介したいと思います。
上述したように、この属性を利用することで子要素 ("すべてのサイト コンテンツの表示" や "ごみ箱" など) を、ユーザーのアクセス許可レベルに応じて表示/非表示の制御が可能です。
下の例では、既定でサイドリンク バー に表示される "すべてのサイト コンテンツの表示" をフル コントロール権限を持たないユーザーに対して非表示にする方法をご紹介します。
まず、SharePoint Designer を起動して、対象のサイトを開いてマスタ ページを表示します。
(マスターページは必要に応じてバックアップを取得してください。)
コード ビューから "すべてのサイト コンテンツの表示" 部分に該当する以下のコードを探します。(既定の default.master では 271 行目にあります。)
<Sharepoint:SPSecurityTrimmedControl runat="server" PermissionsString="ViewFormPages" > <div class="ms-quicklaunchheader"><SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx" Text="<%$Resources:wss,quiklnch_allcontent%>" AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>"/></div> </SharePoint:SPSecurityTrimmedControl> |
Sharepoint:SPSecurityTrimmedControl 要素内の PermissionsString 属性の値を "ViewFormPages" から "ManageWeb" に変更し、マスタ ページを保存します。
この変更により、"すべてのサイト コンテンツの表示" 部分は、フル コントロール権限を持たないユーザーに対して非表示になります。
より詳細な権限を適用したい場合は、以下のサイトに定義一覧がございますので、ご確認ください。
タイトル : SPBasePermissions 列挙 (Microsoft.SharePoint)
アドレス : https://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spbasepermissions.aspx
既定の default.master において、PermissionsString 属性は、"すべてのサイト コンテンツの表示" 部分の他に "ごみ箱" と "サイトの操作" 部分に使用されており、同様に表示/非表示の制御が可能です。
また、以下のように Sharepoint:SPSecurityTrimmedControl 要素のタグで括ることで、独自に制御する部分を追加することが可能で、例えば、サイドリンク バーそのものや、検索ボックス部分の表示/非表示を制御することも可能です。
<Sharepoint:SPSecurityTrimmedControl runat="server" PermissionsString="ManageWeb"> (ここに、アクセス許可レベルに応じて表示/非表示を制御したい部分を入れます) </SharePoint:SPSecurityTrimmedControl> |
なお、いつものお願いになりますが、カスタマイズをした際は動作に問題がないか十分に検証してから運用をお願いいたします。