在allow() - function中检查角色,如果被拒绝则设置警告

时间:2015-09-16 17:53:25

标签: javascript meteor

我使用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失败,用户应该看到通知......

1 个答案:

答案 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