javascript - 使用 JavaScript 更改 SharePoint 列表的权限

标签 javascript sharepoint csom sharepoint-online

我有一个创建列表的应用程序。我希望该应用程序还可以将列表权限设置为仅允许管理员对列表进行更改。我知道如何隐藏列表,但我知道这不会阻止聪明的用户输入列表的 URL 并无论如何修改它。

我没有看到使用 JavaScript 更改列表权限的方法。我可用于列表的功能似乎不允许修改权限,但我可能忽略了正确的功能。

关于我应该查看哪些函数的任何指示?

最佳答案

如何通过 JSOM 为 List 对象启用唯一权限

使用SP.SecurableObject.hasUniqueRoleAssignments property以确定 Angular 色分配是为列表唯一定义的还是从父安全对象继承的。

使用SP.SecurableObject.breakRoleInheritance(copyRoleAssignments, clearSubscopes) Method为 List 对象设置唯一的 Angular 色分配。

例子

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 对象的 Angular 色继承并为当前用户授予 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());    
   }
);

关于javascript - 使用 JavaScript 更改 SharePoint 列表的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897837/

相关文章:

SharePoint 64 位或 32 位

sharepoint - 无法使用 msbuild 构建工作流项目 (Sharepoint 2010)

c# - .NET Core 的 Sharepoint CSOM 身份验证问题

javascript - 为什么 this 指的是全局对象?

javascript - 在 SVG 中嵌入工具提示时出现问题

jquery - SharePoint JQuery GetUserLoginFromEmail

javascript - 如何修复 : Save filtered lookup by current user and status in sharepoint online

javascript - 无法使用 php 将 json 数据传递给 typeahead

javascript - 如何避免幻灯片结束事件中的 JavaScript 关闭

sharepoint - (401) 从 SharePoint 下载文件时出现未经授权的异常