カスタムアクションを特定の権限を持つユーザーにだけ表示する方法
カスタムアクションを使うと、SharePointに様々な機能を組み込むことができるようになりとても便利ですが、機能によっては特定の権限を持つユーザーにだけ使わせたいといったことが出てくると思います。
そんな場合にどうすればよいのか、調べてみました。
カスタムアクションの定義で、カスタムアクションの使用を許可する権限をRights属性に指定します。
例えば、アイテムの追加権限を持っている場合だけカスタムアクションを使用できるようにするには、以下のような定義を書きます。
<CustomAction
Id="OriversCustomActionDisplayFormToolbar"
Location="DisplayFormToolbar"
Sequence="1"
RegistrationType="List"
RegistrationId="104"
Rights="AddListItems"
Title="表示フォームのツール バー" >
<UrlAction
Url="_layouts/oriverscustomaction.aspx"/>
</CustomAction>
このカスタムアクションをサイトに登録して動作を確認してみます。
まずはアイテムの追加権限を持っているユーザーの場合・・・
「表示フォームのツール バー」がツールバーに表示されました。

次にアイテムの追加権限を持っていないユーザーの場合・・・
「表示フォームのツールバー」がツールバーに表示されません。

ということで、期待どおりの動作をしてくれました。
Rights属性に指定できる値については、SDKに細かく説明があるのでそちらを参照してください。
http://msdn2.microsoft.com/ja-jp/library/microsoft.sharepoint.spbasepermissions.aspxでは次に、サイト管理者だけにカスタムアクションの使用を許可する時の方法です。
この場合は先ほどのRights属性を使わずに、RequireSiteAdministrator属性を使います。
以下に例を示します。
<CustomAction
Id="OriversCustomActionDisplayFormToolbar"
Location="DisplayFormToolbar"
Sequence="1"
RegistrationType="List"
RegistrationId="104"
RequireSiteAdministrator="true"
Title="表示フォームのツール バー" >
<UrlAction
Url="_layouts/oriverscustomaction.aspx"/>
</CustomAction>
RequireSiteAdministrator属性に「true」を指定します。
ちなみにデフォルト値は「false」です。なので、RequireSiteAdministrator属性を指定しない場合にはサイト管理者以外の人にもカスタムアクションが表示されるわけです。
最後に、Rights属性とRequireSiteAdministrator属性の両方が指定されていた場合にどうなるか調べてみました。
定義は以下のようになります。
<CustomAction
Id="OriversCustomActionDisplayFormToolbar"
Location="DisplayFormToolbar"
Sequence="1"
RegistrationType="List"
RegistrationId="104"
Rights="AddListItems"
RequireSiteAdministrator="true"
Title="表示フォームのツール バー" >
<UrlAction
Url="_layouts/oriverscustomaction.aspx"/>
</CustomAction>
結果は、サイト管理者でないとカスタムアクションが表示されませんでした。
RequireSiteAdministrator属性のほうが強いわけですね。
手軽に権限の制御もできるし、カスタムアクションはかなり使えそうですねー。