トップ回答者
Javascriptで権限を持たないユーザがリストアイテムの権限設定を更新出来るようにしたい

質問
-
お世話になります。
Office365 SharePointOnline2013でSharePointホスト型アドインを開発中なのですが、下記の要件を満たそうとしています。
1.ユーザがアドイン外のリストにリストアイテムを作成し、そのリストアイテムに対してJavascriptを起動する
2.Javascriptの処理が終わる
3.Javascriptの処理を実行したリストアイテムの権限の継承を解除、権限を書き換える権限の書き換え自体はhttps://msdn.microsoft.com/ja-jp/library/office/dn495392.aspxのJQueryAjaxを参考にしているのですが、
権限設定を行う権限を持っていないユーザがリストアイテムを作成した際に、権限の書き換えに失敗してしまいます。
https://msdn.microsoft.com/ja-jp/library/office/fp179892.aspxに記載されている、
「アドイン用ポリシー」を使えば実現出来るのかな?と調査を始めたのですが、イマイチ進展が無くて困っている状況です。
上記に関する情報をお持ちの方、何卒御助力をよろしくお願い致します。
回答
-
SharePointアドインの場合、コンテキストに紐づくユーザーの権限で処理が動きます。
SharePointホスト型の場合は、上記ユーザーが現在SharePointにログインしているユーザーになるため、ログインユーザーが権限を持たない操作は実行できないようになっています。
これがSharePointホスト型ではなく、プロバイダーホスト型にすると、.NET Client Object Modelが使えるようになり、.NET Client Object Modelだと、コンテキストを作成して任意のユーザーをコンテキストに紐づけることができるため、例えばフルコントロール権限を持つユーザーを紐づけて、ログインユーザーができない処理も実行することができます。(コンテキストに紐づけたユーザーで実行するので、ログインユーザーが実行したことにすることはできませんが)
そして、アドイン用ポリシーですが、これはプロバイダーホスト型のSharePointアドインに対して、上記のようなコンテキストに紐づくユーザーの権限ではなく、アプリそのものに対して与えられた権限で処理されるようにすることができます。
ただし、アドイン用ポリシーはプロバイダーホスト型でしか使えません。以下のページに説明があります。
https://msdn.microsoft.com/ja-jp/library/office/fp179892.aspx
従って、今回のようなことを実現する場合は、プロバイダーホスト型でないと難しいのではないかと思います。
SharePointホスト型でやろうと思うと、、、例えば権限設定するところだけ、SharePoint Designer Workflowで作り、Workflowを起動するためのアイテムの更新をSharaPointアドイン側で行うというのではどうでしょう。SharePoint Developer http://sharepoint.orivers.jp
- 回答としてマーク sttks 2016年6月13日 6:57
すべての返信
-
SharePointアドインの場合、コンテキストに紐づくユーザーの権限で処理が動きます。
SharePointホスト型の場合は、上記ユーザーが現在SharePointにログインしているユーザーになるため、ログインユーザーが権限を持たない操作は実行できないようになっています。
これがSharePointホスト型ではなく、プロバイダーホスト型にすると、.NET Client Object Modelが使えるようになり、.NET Client Object Modelだと、コンテキストを作成して任意のユーザーをコンテキストに紐づけることができるため、例えばフルコントロール権限を持つユーザーを紐づけて、ログインユーザーができない処理も実行することができます。(コンテキストに紐づけたユーザーで実行するので、ログインユーザーが実行したことにすることはできませんが)
そして、アドイン用ポリシーですが、これはプロバイダーホスト型のSharePointアドインに対して、上記のようなコンテキストに紐づくユーザーの権限ではなく、アプリそのものに対して与えられた権限で処理されるようにすることができます。
ただし、アドイン用ポリシーはプロバイダーホスト型でしか使えません。以下のページに説明があります。
https://msdn.microsoft.com/ja-jp/library/office/fp179892.aspx
従って、今回のようなことを実現する場合は、プロバイダーホスト型でないと難しいのではないかと思います。
SharePointホスト型でやろうと思うと、、、例えば権限設定するところだけ、SharePoint Designer Workflowで作り、Workflowを起動するためのアイテムの更新をSharaPointアドイン側で行うというのではどうでしょう。SharePoint Developer http://sharepoint.orivers.jp
- 回答としてマーク sttks 2016年6月13日 6:57
-
及川 紘旭 様
ご回答ありがとうございます。
SharePointホスト型では実装は無理そうですね。
やはりアドイン用ポリシーはプロバイダーホスト型でないと使えないのですね。。。目的としては、一定の条件を満たしたアイテムを編集させたくなかったため、妥協策として裏でアイテムにフラグを持たせ、一定の条件を満たしたアイテムの編集画面を表示した際にメッセージを出してアイテム一覧画面へ遷移する処理を、スクリプトエディタで埋め込みました。
SPDのワークフローで権限を書き換える処理も使えなくは無いのですが、不特定多数の環境に展開する事を想定していたため、ユーザーによる複雑な設定は避けたかった次第です。