Я использую Контроль доступа npm пакет Контроль доступа npm. Можно ли каким-то образом получить Role, Action & Resource из коллекции mongodb и использовать его с этим контролем доступа npm?
Если вы видите на рисунке ниже, я определил одну роль. js file используя этот контроль доступа npm и другую сторону, я передаю readOwn (действие), профиль (ресурс) этой роли. js используя промежуточное ПО, я просто хочу эти два атрибута из коллекции MongoDB на основе роли пользователя, таким образом Я могу сделать Dynami c RBA C. Как я могу использовать эти два атрибута от таблицы к промежуточному программному обеспечению?
, пожалуйста, посмотрите это изображение
// сервер / роли. js
const AccessControl = require("accesscontrol");
const ac = new AccessControl();
exports.roles = (function() {
ac.grant("user")
.readOwn("profile")
.updateOwn("profile", ["comment"])
.deleteOwn("profile");
ac.grant("pujari")
.extend("user")
.readAny("profile");
ac.grant("shopkeeper")
.extend("user")
.extend("pujari")
.updateAny("profile")
.deleteAny("profile");
return ac;
})();
// Маршруты
var express = require('express');
var router = express.Router();
const verify=require('../Authentication/verifyToken');
var UserController = require('../controllers/user');
const User = require('../models/user');
// Create a new user
router.post('/register', User.hashPwd, UserController.create);
// Retrieve All users
router.get('/details', verify.allowIfLoggedin, verify.grantAccess('readOwn', 'profile'), UserController.findAll);
// npm контроль доступа
grantAccess: function(action, resource) {
return async (req, res, next) => {
try {
var role = returnRole(req);
const permission = roles.can(role)[action](resource);
console.log(permission.granted);
console.log(permission.attributes);
if (!permission.granted) {
return res.status(401).json({
error: `${role} role don't have enough permission to perform this action`
});
}
next();
} catch (error) {
next(error);
}
};
},