如果我想注入一些代码在我的odata插入/更新/删除/查询结束点有办法做到这一点吗?
例如:- 在查询中,我想注入基于进一步约束的安全性(如如果角色是x,则返回数据子集)。
- 更新我想防止某些字段被更新(如CreateDate),所以某种形式的overpost保护。或者我不允许普通用户更新管理数据列。
- 在插入/更新上,我想让基于服务器的逻辑计算某些列值,并进一步触发某些服务器操作。
- 在删除时,我想取消删除,将记录插入到审计表中,并设置实体的DeleteDate列-也称为软删除。
这些可能吗?有关于如何做到这一点的文档/教程吗?
谢谢
我们没有列级安全,只有表级安全。然而,你可以实现你想要使用前/后事件,如beforeCreate, beforeUpdate,在那里你可以插入你的服务器端javascript代码进行干预。
我推荐JayData - the Entity中有关事件处理程序的最新博文你可以在JayStorm PaaS应用程序管理器上定制之前/之后的entityset级别事件。
实现基于角色的行为:'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
}
}
用户属性:Groups——返回字符串数组登录名,名,姓,启用,密码
Softdelete 这需要定制开发。我建议您禁止对安全组执行删除操作,并发布一个服务方法来提供此功能。