环回 - 需要2个自定义角色才能访问方法

时间:2017-09-07 06:43:42

标签: acl loopbackjs strongloop

我有一种多租户申请。 我有很多组,用户属于一个组。 Group有许多不同的模型,例如新闻,文件等 用户只能访问其组的元素。 它类似于团队成员'在Loopback文档中的例子,在我的例子中我有`groupMember',所以当用户试图访问时,我检查User.groupId === Model.groupId

我遇到的问题是,我需要为这些群体担任角色。 所以,例如基本的,特权的,管理员。 Basic可以访问一些方法,特权比基本但不是全部,管理员可以访问所有方法,但只适用于他的小组的元素。 所以,根据我的理解,我必须结合 - groupMemberadmin,但我不知道该怎么做。

任何人都可以提供帮助?我觉得这很常见。

1 个答案:

答案 0 :(得分:0)

module.exports = function (app) {
  //get User model from the express app
  var loopback = require('loopback');
  var User = app.models.User;
  let { Role, RoleMapping } = require('../../server/server').models;

  //Role Mapping
  User.observe('after save', function setRoleMapping(ctx, next) {
    console.log("Current User : "+currentUser);
    if (ctx.instance) {
      if(ctx.isNewInstance) {
        let rol_name=[ctx.instance.type];
        // look up role based on type
        Role.find({where: {name:{inq:rol_name} }}, function(err, role) {
          console.log('Role: '+role)
          if (err) {return console.log(err);}

          RoleMapping.create({
            principalType: rol_name,
            principalId: ctx.instance.id,
            roleId: role[0].id
          }, function(err, roleMapping) {

            if (err) {return console.log(err);}
            console.log("Created Role :"+JSON. parse(JSON. stringify(role)));
            console.log('User assigned RoleID ' + role[0].id + ' (' + ctx.instance.type + ')');

          });

        });

      }
    }
    next();
  });

}

发布json数据格式

{
"email":"test54@gmail.coms",
"password":"123456",
"type":"storeAdmin"
}

我的角色表: enter image description here