You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
var path = require("path");
|
|
daoModule = require("./DAO");
|
|
databaseModule = require(path.join(process.cwd(),"modules/database"));
|
|
|
|
/**
|
|
* 获取权限列表
|
|
*
|
|
* @param {Function} cb 回调函数
|
|
*/
|
|
module.exports.list = function(cb) {
|
|
db = databaseModule.getDatabase();
|
|
sql = "SELECT * FROM sp_permission_api as api LEFT JOIN sp_permission as main ON main.ps_id = api.ps_id WHERE main.ps_id is not null";
|
|
database.driver.execQuery(sql,function(err,result){
|
|
if(err) return cb("获取权限列表失败",null);
|
|
cb(null,result);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 权限验证
|
|
*
|
|
* @param {[type]} rid 角色ID
|
|
* @param {[type]} serviceName 服务名
|
|
* @param {[type]} actionName 动作名
|
|
* @param {Function} cb 回调函数
|
|
*/
|
|
module.exports.authRight = function(rid,serviceName,actionName,cb) {
|
|
|
|
// 超级管理员
|
|
if(rid == 0) return cb(null,true);
|
|
|
|
// 权限验证
|
|
daoModule.findOne("PermissionAPIModel",{"ps_api_service":serviceName,"ps_api_action":actionName},function(err,permissionAPI){
|
|
console.log("rid => %s,serviceName => %s,actionName => %s",rid,serviceName,actionName);
|
|
if(err || !permissionAPI) return cb("无权限访问",false);
|
|
|
|
daoModule.findOne("RoleModel",{"role_id":rid},function(err,role){
|
|
console.log(role);
|
|
if(err || !role) return cb("获取角色信息失败",false);
|
|
ps_ids = role.ps_ids.split(",");
|
|
for(idx in ps_ids) {
|
|
ps_id = ps_ids[idx];
|
|
if(parseInt(permissionAPI.ps_id) == parseInt(ps_id)) {
|
|
return cb(null,true);
|
|
}
|
|
}
|
|
return cb("无权限访问",false);
|
|
});
|
|
});
|
|
} |