我有一个名为Document Access的实体。现在,此实体文档访问与事件具有N:1关系(一个事件可以具有许多文档访问权限)。
当有人创建新的文档访问记录时,我有一个JS来检查创建记录的人(当前登录用户)是否与事件的所有者相同。如果没有,我禁止创建(这是在保存记录上设置的)。
文档访问记录的所有者可以是任何人(不一定是事件的所有者)。除非由事件所有者完成,否则如何确保防止删除这些文档访问记录?
答案 0 :(得分:5)
我会尝试回答并确定您自己的每个选项:
答案 1 :(得分:1)
最好的approcah是通过删除文档访问记录的插件来完成的。
在您的代码中,您可以按照以下步骤操作:
检索与文档访问相关的事件的所有者:
Guid incidentId --> You get this form the lookup field, you have in Document Access to Incident
Entity incident = service.Retrive("incident", incidentId, new ColumnSet("onwerid"));
检查触发插件的用户是否是事件的所有者
// context --> execution plugin context
Guid ownerIncident = ((EntityReference)incident.Attributes["ownerid"]).Id;
if(ownerIncident != context.InitiatingUserId)
{
throw new InvalidPluginExecutionContext("Can't delete Documet Access record");
} // otherwise let the record to be deleted