如何在服务器端使用meteor实现基于动态角色的动作授权?

时间:2017-04-10 17:25:10

标签: meteor

我有一个应用程序,我可以在其中创建多个动态角色。 我还可以为每个角色分配一组操作,其中每个操作都是服务器端的发布者/方法。 在这种情况下,我可以通过alanning来使用meteor-roles吗?

1 个答案:

答案 0 :(得分:1)

您需要做的就是在继续发布或方法之前检查用户是否处于某个角色。

出版示例:

import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import { Posts } from '/imports/api/posts/posts';

Meteor.publish('publicationName', function() {
    if(!Roles.userIsInRole(this.userId, 'administrator')) {
        throw new Meteor.Error('unauthorised', 'You cannot do this.');
    }

    return Posts.find();
});

方法示例:

import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import { Posts } from '/imports/api/posts/posts';

Meteor.methods({
    'remove.post':(id) => {
        if(!Roles.userIsInRole(this.userId, 'administrator')) {
            throw new Meteor.Error('unauthorised', 'You cannot do this.');
        }

        return Posts.remove(id);
    }
});