Loopback 3创建用户并分配角色

时间:2016-07-07 19:52:04

标签: loopbackjs

我创建了一个扩展User的模型,并覆盖了create方法,因为我需要额外的逻辑(在server / models / person.js中)。我正在创建没有问题的用户,并且已经通过API注册了两个角色(名为“user”和“admin”)。我需要的是将新用户分配给其中一个角色('用户')。我该怎么办?

Person.upsert(obj, function(err, u1) {
  if (err != null) {
    console.log('Error: ', err);
    callback({code: 401, message: err});
  } else {
    obj.createAccessToken(2629746000, function(err, token) {
      if (err) {
        callback(err, null);
      } else {
        obj.token = token;
        callback(null, obj);
      }
    });
  }
});

由于

2 个答案:

答案 0 :(得分:1)

获取Role个实例并将角色分配给此人:

role.principals.create({
                    principalType: RoleMapping.ACCOUNT,
                    principalId: person.id
                });

答案 1 :(得分:0)

我找到了一种方法,我创建了Person和RoleMapping之间的关系:

"relations": {
"roles": {
  "type": "hasMany",
  "model": "RoleMapping",
  "foreignKey": "principalId",
  "options": {
    "disableInclude": true
  }
}

现在我可以通过以下关系调用RoleMapping模型:

Person.upsert(obj, function(err, u1) {
  if (err != null) {
    console.log('Error: ', err);
    callback({code: 401, message: err});
  } else {
    obj.roles.create({principalType: obj.roles.ROLE, roleId: 'admin'},
      function() {
        obj.createAccessToken(2629746000, function(err, token) {
          if (err) {
            callback(err, null);
          } else {
            obj.token = token;
            callback(null, obj);
          }
        });
      });
  }
});

这可以吗?