JayStorm数据服务插入/更新/删除/查询拦截

时间:2013-06-09 21:19:25

标签: jaydata

如果我想在我的odata插入/更新/删除/查询端点注入一些代码,有没有办法做到这一点?

例如:

  • 在查询中我想注入一个基于安全性的进一步限制(如果角色是x然后返回数据子集)。
  • 在更新时我想阻止更新某些字段(如CreateDate),因此需要某种形式的overpost保护。或者我想不允许常规用户更新管理数据列。
  • 在插入/更新时,我想让基于服务器的逻辑计算某些列值,并进一步触发某些服务器操作。
  • 关于删除我想取消删除,将记录插入审计表并设置实体的DeleteDate列 - AKA软删除。

这些可能吗?有关如何执行此操作的任何文档/教程?

由于

2 个答案:

答案 0 :(得分:0)

我们没有列级安全性,只有表级别。 但是,你可以在事件之前/之后实现你想要的东西,比如beforeCreate,beforeUpdate,你可以插入你的服务器端javascript代码进行干预。

答案 1 :(得分:0)

我推荐关于event handlers in JayData - 实体的最新博文 EntitySet级事件之前/之后是您可以在JayStorm PaaS应用程序管理器上自定义的事件。

实施基于角色的行为 'this'变量包含一个用户,您可以使用它来实现自定义逻辑。

var self = this; //it's better to avoid confusions later
var currentUser = self.User;

检查用户组成员资格:

if (currentUser.Groups.indexOf('admin') <0 ){
  items.forEach(function(it)){
    //items is an array of created/updated/deleted entities
  }
}

用户的属性: 组 - 返回字符串数组 登录,名字,姓氏,已启用,密码

<强> Softdelete 这需要定制开发。我建议您禁止对安全组执行删除操作,并发布服务方法以提供此功能。