我使用alanning:roles
并想要检查给定角色以授予对DB的访问权限。如果访问被拒绝,是否可以做一些代码 - 比如通知?
更新
如您所见,我根本不理解throw错误方法。
server.js
Meteor.methods({
'crashme':function() {
throw new Meteor.Error(402, "Access Denied", "details", "more details");
}
});
Users.allow({
insert: function(userId) {
if (Roles.userIsInRole(userId, 'admin')) return true;
},
update: function(userId) {
if (Roles.userIsInRole(userId, 'admin')) return true;
},
remove: function(userId) {
if (Roles.userIsInRole(userId, 'admin')) return true;
}
});
在客户端我做
client.js
Roles.addUsersToRoles(userId, 'anything');
Meteor.call("crashme", function(err, result) {
console.log(err);
});
如果addUsersToRoles失败,用户应该看到通知......
答案 0 :(得分:0)
在服务器端抛出一个流星异常 - 在客户端捕获异常。
给您的例外留言 - 将其显示给用户。
throw new Meteor.Error(XX,e.message);
请参阅以下内容: Throwing Error
尝试这样的事情:
Users.allow({
insert: function(userId) {
if (Roles.userIsInRole(userId, 'admin'))
return true
else
throw new Meteor.Error(xx,xx);
}
});
在客户端
SomeCollection.remove(someId, function(err, result) {
console.log(err.message); // Outputs "Not the owner"
});
请看这篇文章:also shown here