在结构自定义方法中创建节点时,如何避免为节点分配所有者/安全关系?

时间:2016-12-20 16:53:21

标签: structr

我为类型(Person)编写了一个structr自定义方法。方法是makeNewHire,它需要一个现有的人并为他们创建一堆ToDos,然后将它们附加到它们。

在这样做的过程中,它会在我登录的structr用户类型和每个新的ToDo节点之间创建两个关系。关系的类型有:SECURITY和:OWNS。

现在,当我尝试将todo的状态更新为他们被分配到的人(而不是创建新节点的管理员)时,我收到401错误。我认为这是因为我无意中创建了安全设置。

如何使用可通过rest api访问的structr自定义方法来创建新节点而不创建这些关系?最终我想做到这一点只有管理员和与todos有特定关系的人才能改变它们,所以如果你能指出我关于这些东西的教程,那也会很棒。

这是我方法中的相关代码。它使用服务器端JS:

for(i=0;i<tasks.length;i++) {
   newTD = Structr.create('ToDo', 'title', tasks[i].todo.title, 'marker', 'delete me2', 'event', 'First Day');
   Structr.create_relationship(newTD, thisPerson, 'ASSIGNED_TO');
   Structr.create_relationship(newTD, thisGeneralist, 'ASSIGNED_BY');
   // go through the documents and attach them.
   for(j=0;j<tasks[i].taskDocs.length; j++) {
      Structr.create_relationship(newTD, tasks[i].taskDocs[j], 'HAS_DOCUMENT');
  }
}

2 个答案:

答案 0 :(得分:2)

如果您在“安全性”部分中为匹配的URL签名创建资源访问授权,则可以消除401错误,请参阅https://support.structr.com/article/235

答案 1 :(得分:0)

Axel是正确的,但我想确定我做了什么导致我无法使用他的修复。

我在Structr中创建了ToDos,Structr已经为他们分配了与其他节点的SECURITY和OWNS关系。我删除了这些关系,因此无法与它们正确交互。