Meteor将CRUD操作限制为管理员或文档所有者
Meteor restrict CRUD operations to admins or the document owner
目前在我的流星应用程序中,我希望能够将数据库CRUD操作仅限于文档所有者,或者例如,如果他们拥有管理员权限。
我使用的是Metrolealanning:roles包,有人能解释一下我如何最好地利用这个包来限制谁可以根据自己的角色创建、阅读或更新文档,或者他们是否是文档的所有者吗?
使用alanning:roles
包,可以使用其中userId和role是String的Roles.userIsInRole(userId,role)
。
因此,您可以执行以下操作。
Posts.allow({
update:function(){
var currentUser = Meteor.user(),
isUserAdmin = Roles.userIsInRole(currentUser,'Admin');
if(isUserAdmin){
console.log("Ok the user is logged in on an admin account, lets allow it to update")
return true;
}else{
console.log("Someone just try to update the document and he isn't logged in into an admin account")
return false;
}
}
})
此外,如果您想再次检查用户是文档的admin
还是owner
,只需使用||
或运算符。
if(isUserAdmin || doc.userId === userId){return true;}
这个小代码片段是从http://discovermeteor.com.这件事应该会有一些线索。
ownsDocument = function(userId, doc) {
return doc && doc.userId === userId;
};
Posts = new Meteor.Collection('posts');
Posts.allow({
update: ownsDocument
});
因为我没有使用过角色包,所以我帮不上忙。但在github页面上快速浏览后,它看起来非常简单。
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- Meteor将CRUD操作限制为管理员或文档所有者