我有一种多租户申请。 我有很多组,用户属于一个组。 Group有许多不同的模型,例如新闻,文件等 用户只能访问其组的元素。 它类似于团队成员'在Loopback文档中的例子,在我的例子中我有`groupMember',所以当用户试图访问时,我检查User.groupId === Model.groupId
我遇到的问题是,我需要为这些群体担任角色。
所以,例如基本的,特权的,管理员。 Basic可以访问一些方法,特权比基本但不是全部,管理员可以访问所有方法,但只适用于他的小组的元素。
所以,根据我的理解,我必须结合 - groupMember
和admin
,但我不知道该怎么做。
任何人都可以提供帮助?我觉得这很常见。
答案 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"
}