环回 - 添加用户未添加roleMapping数据

时间:2017-02-09 15:17:05

标签: node.js loopback

在添加用户时,在与用户对应的roleMapping中添加数据的最佳做法是什么。

1)在model-config中设置关系,是否会添加roleMapping数据?

2)在用户的保存挂钩后,需要手动添加如下所述的roleMapping:[Link] [1]。

[1]:Dynamically adding user to a loopback Role,如下所示:

user.observe('after save', function function_name(ctx, next) {
  if (ctx.instance) {
    if(ctx.isNewInstance) {

      // look up role based on type
      //
      Role.find({where: {name: 'role-name'}}, function(err, role) {
        if (err) {return console.log(err);}

        RoleMapping.create({
          principalType: "USER",
          principalId: ctx.instance.id,
          roleId: role.id
        }, function(err, roleMapping) {

          if (err) {return console.log(err);}

          console.log('User assigned RoleID ' + role.id + ' (' + ctx.instance.type + ')');

        }):

      });

}

}   下一个(); });

1 个答案:

答案 0 :(得分:0)

user.observe('after save', function function_name(ctx, next) {
if (ctx.instance) {
    if (ctx.isNewInstance) {
        // look up role based on type
        Role.find({
            where: {
                name: 'role-name'
            }
        }, function(err, role) {
            if (err) {
                return console.log(err);
            }
            role.principals.create({
                principalType: RoleMapping.USER,
                principalId: ctx.instance.id
            }, function(err, roleMapping) {
                if (err) {
                    return console.log(err);
                }
                console.log('User assigned RoleID ' + role.id + ' (' + ctx.instance.type + ')');
            }):
        });
    }
}
next();

});

根据我对环回的理解,用户和角色通过RoleMapping模型连接。即。用户通过RoleMapping或反之亦然有很多角色。

你所写的内容也可以这样做。

principalType中,您可以指定所需的任何字符串。如果您提供RoleMapping.USER,则会在数据库中显示USER