4

リストを作成するアプリがあります。管理者のみがリストを変更できるように、アプリでリストのアクセス許可も設定してほしいです。リストを非表示にする方法は知っていますが、賢いユーザーがリストの URL を入力して変更することを防ぐことにはならないことは理解しています。

JavaScript でリストの権限を変更する方法がわかりません。リストに使用できる機能では、アクセス許可の変更が許可されていないようですが、正しい機能を見落としている可能性があります。

私が見るべき機能についての指針はありますか?

4

1 に答える 1

8

JSOM を介して List オブジェクトに対して固有のアクセス許可を有効にする方法

SP.SecuringObject.hasUniqueRoleAssignments プロパティを使用して、ロールの割り当てが List に対して一意に定義されているか、親のセキュリティ保護可能なオブジェクトから継承されているかを判断します。

SP.SecurableObject.breakRoleInheritance(copyRoleAssignments, clearSubscopes) メソッドを使用して、List オブジェクトに一意のロールの割り当てを設定します。

var listTitle = 'Documents';
var context = SP.ClientContext.get_current();
var list = context.get_web().get_lists().getByTitle(listTitle);   

context.load(list,'HasUniqueRoleAssignments'); 
context.executeQueryAsync(
   function(){
      var hasUniqueAssgns = list.get_hasUniqueRoleAssignments();
      if(!hasUniqueAssgns) {
         list.breakRoleInheritance(false, true);
         context.executeQueryAsync(
            function(){
                console.log('Success');
            }, 
            function(sender,args){
               console.log(args.get_message());    
            }
         );
      }
   }, 
   function(sender,args){
      console.log(args.get_message());    
   }
);

JSOM を介して List オブジェクトにカスタム権限を付与する方法

次の例は、List オブジェクトのロールの継承を解除Full Controlし、現在のユーザーにアクセス許可を付与する方法を示しています。

var listTitle = 'Documents';
var context = SP.ClientContext.get_current();
var list = context.get_web().get_lists().getByTitle(listTitle);   
var currentUser = context.get_web().get_currentUser();

list.breakRoleInheritance(false, true); // break role inheritance first!

var roleDefBindingColl = SP.RoleDefinitionBindingCollection.newObject(context);
roleDefBindingColl.add(context.get_web().get_roleDefinitions().getByType(SP.RoleType.administrator));
list.get_roleAssignments().add(currentUser, roleDefBindingColl);

context.executeQueryAsync(
   function(){
      console.log('Success');
   }, 
   function(sender,args){
      console.log(args.get_message());    
   }
);
于 2014-07-23T07:57:36.443 に答える