2017-01-10 10 views
0

У меня есть база данных MySQL, созданная с помощью Sequelize. Теперь я хочу дать роли пользователям из этой базы данных с узлом acl. Это мой acl.js файл:Как я могу связать роли js-узла ACL с пользователями из базы данных MySQL (sequelize)

var acl = require('acl'); 
var aclSeq = require('acl-sequelize'); 
var sequelize = require('../models/index.js'); 

//acl 
acl = new acl(new aclSeq(sequelize.connection, { prefix: 'acl_' })); 

acl.addUserRoles(4, 'admin'); 

acl.allow('admin', 'ourdogs', 'view') 

module.exports = acl; 

Проблема заключается в том, что он создает новые базы данных acl_roles и acl_users, но я хочу, чтобы подключить пользователей из моей существующей базы данных «пользователь»

id, username, email, password_digest, firstName, lastName, image, EmployeeId (columns) 
'4', 'admin', '[email protected]', 'a', 'Admin', NULL, 'http://interworldgems.com/client_login/admin/images/login_icon.png', NULL 

И после этого вызвать этот метод, который будет разрешен только для администратора

app.get('/ourdogs', acl.middleware(), function(req, res) { 
    models.Dog.findAll().then(function(dogs) { 
     res.render('ourdogs/ourdogs', { 
     title: 'Our dogs', 
     dogs: dogs 
     }); 
    }) 
    }); 

Запустив этот код ACL создает эти базы данных

«acl_roles»

key, value (columns) 
admin, [4] 

«acl_users»

key, value (columns) 
4, ["admin"] 

Я знаю, что мой код из acl.js не правильно, но я не знаю, как подключить пользователей из моей базы данных, а затем добавить их роли с acl. Я смотрел документацию, но я ничего не мог с этим поделать.

Благодарим за помощь!

ответ

0

ACL не обрабатывает аутентификацию. ACL промежуточного слоя выполняет проверку, как следующее:

acl.isAllowed(req.session.userId, '/ourdogs', 'get') 

Для того, чтобы работать, вы должны были уже заселены req.session.userId. Он будет проверять разрешение на req.method, поэтому вы также должны назначить это разрешение.