PermissionAPIDAO.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var path = require("path");
  2. daoModule = require("./DAO");
  3. databaseModule = require(path.join(process.cwd(),"modules/database"));
  4. /**
  5. * 获取权限列表
  6. *
  7. * @param {Function} cb 回调函数
  8. */
  9. module.exports.list = function(cb) {
  10. db = databaseModule.getDatabase();
  11. 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";
  12. database.driver.execQuery(sql,function(err,result){
  13. if(err) return cb("获取权限列表失败",null);
  14. cb(null,result);
  15. });
  16. }
  17. /**
  18. * 权限验证
  19. *
  20. * @param {[type]} rid 角色ID
  21. * @param {[type]} serviceName 服务名
  22. * @param {[type]} actionName 动作名
  23. * @param {Function} cb 回调函数
  24. */
  25. module.exports.authRight = function(rid,serviceName,actionName,cb) {
  26. // 超级管理员
  27. if(rid == 0) return cb(null,true);
  28. // 权限验证
  29. daoModule.findOne("PermissionAPIModel",{"ps_api_service":serviceName,"ps_api_action":actionName},function(err,permissionAPI){
  30. console.log("rid => %s,serviceName => %s,actionName => %s",rid,serviceName,actionName);
  31. if(err || !permissionAPI) return cb("无权限访问",false);
  32. daoModule.findOne("RoleModel",{"role_id":rid},function(err,role){
  33. console.log(role);
  34. if(err || !role) return cb("获取角色信息失败",false);
  35. ps_ids = role.ps_ids.split(",");
  36. for(idx in ps_ids) {
  37. ps_id = ps_ids[idx];
  38. if(parseInt(permissionAPI.ps_id) == parseInt(ps_id)) {
  39. return cb(null,true);
  40. }
  41. }
  42. return cb("无权限访问",false);
  43. });
  44. });
  45. }