ひさびさの更新になってしまいましたがちゃんと生きてますよ!!
というわけで、生きている証を立てたいと思います。
ログインユーザの権限に応じて、サイトのUIの一部を非表示にしたいといった要望は多いですよね。
そこで、今回はClient Object Modelを使ってユーザー権限をチェックするコードをJavaScriptで実装してみたいと思います。
Client Object Modelでユーザー権限を取得するには、SP.Web.effectiveBasePermissions propertyを使います。
これで、ユーザーがサイトに対して持っている権限の一覧が取れるので、そこからユーザー権限を判断します。
たとえば、「Webサイトの管理」権限を持っていればフルコントロール権限があるだろう、とか。
では、ログインユーザーが「Web サイトの管理」権限を持っているかチェックするサンプルコードを書いてみます。jQueryも使ってます。
$(function(){ ExecuteOrDelayUntilScriptLoaded(CheckPermissionOnWeb, "sp.js"); }); function CheckPermissionOnWeb() { var ctx = new SP.ClientContext.get_current(); var web = ctx.get_web(); var currentUser = web.get_currentUser(); ctx.load(currentUser); ctx.load(web,'EffectiveBasePermissions'); ctx.executeQueryAsync(Function.createDelegate(this, onSuccessMethod), Function.createDelegate(this, onFailureMethod)); function onSuccessMethod(sender, args) { if (web.get_effectiveBasePermissions().has(SP.PermissionKind.manageWeb)) { console.log('You are Site Admin.'); } } function onFailureMethod(sender, args) { console.log('Error:' + args.get_message()); } }
上記で「SP.PermissionKind.manageWeb」の「manageWeb」のところを変えれば、別の権限を持っているかもチェックできます。
たとえば、「manageLists」ならリストの管理権限があることになります。
具体的には、以下をご参考に。
https://msdn.microsoft.com/en-us/library/ee556747.aspx