1

我创建了一个将项目添加到 SharePoint 列表的 Web 部件。提交项目后,我使用:

   var theItem = this.state.Id;
      console.log(theItem, 'theItem');
      
      const ler2 = await sp.web.lists.ensure("MyList");
      const getList2: IList = ler2.list;
      await getList2.roleAssignments();
         
      const owner = this.state.PolicyOwnerBackup;
      const rperson = this.state.ResponsiblePersonBackup;
      console.log(owner, 'owner');
      console.log(rperson, 'rperson');
           
      const EditroleDefinition = await sp.web.roleDefinitions.getByName("Edit").get();
      console.log(EditroleDefinition, 'EditroleDefinition');
      const FulControlroleDefinition2 = await sp.web.roleDefinitions.getByName("Full Control").get();
      console.log(FulControlroleDefinition2, 'FulControlroleDefinition');

await sp.web.lists.getByTitle('MyList').items.getById(theItem).breakRoleInheritance(false, false);
   
      const assignments = await sp.web.lists.getByTitle('MyList').items.getById(theItem).roleAssignments();
           
      console.log(assignments, 'assignemnts');

sp.web.siteUsers.getById(rperson).get();
                 
      assignments.forEach(async (entry) => {
            
      const remove = await sp.web.lists.getByTitle('MyList').items.getById(theItem).roleAssignments.remove(entry.PrincipalId,FulControlroleDefinition2.Id );
      console.log(remove);
        
     });

并且使用相同的表单对上传的任何文件进行非常相似的权限设置过程。

我在工作台上没有收到任何错误,但是当任何其他用户在部署到实时 SPO 站点时使用它时,我会收到 403 错误(禁止)。如果我将用户权限提升到完全控制,它有时会起作用,但大多数时候不会。我拥有 SPO 站点的所有权和完全控制权,但其他用户只有贡献权限。我可以做些什么来允许这些其他用户拥有权限,可以将权限应用于任何新创建的项目和文件而不会出错?也许在上传时利用我的权限?

我已阅读以下内容,可能与我的问题有关? https://github.com/pnp/pnpjs/issues/489

4

1 回答 1

0

事实证明,做客户端是不可能的。如果创建 REST 请求的用户没有执行此类操作的权限,则无法更改权限。是的,有道理,但这是一个主要限制。有人建议我这样做的唯一方法是在 Azure 中创建可以做到这一点的东西。

于 2021-01-25T20:22:28.437 回答