1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- var path = require('path');
- // var roles_controller = require("../controllers/roles");
- var path = require("path");
- global.service_caches = {};
- // 存储全局验证函数
- global.service_auth_fn = null;
- /**
- * 构造回调对象格式
- *
- * @param {[type]} serviceName 服务名称
- * @param {[type]} actionName 动作名称(方法名)
- * @param {[type]} serviceModule 服务模块
- * @param {[type]} origFunc 原始方法
- */
- function Invocation(serviceName,actionName,serviceModule,origFunc) {
- return function() {
- var origArguments = arguments;
- return function(req,res,next) {
- if(global.service_auth_fn) {
- global.service_auth_fn(req,res,next,serviceName,actionName,function(pass) {
- if(pass) {
- origFunc.apply(serviceModule,origArguments);
- } else {
- res.sendResult(null,401,"权限验证失败");
- }
- });
- } else {
- res.sendResult(null,401,"权限验证失败");
- }
- }
- }
- }
- // 获取服务对象
- module.exports.getService = function(serviceName) {
- if(global.service_caches[serviceName]) {
- return global.service_caches[serviceName];
- }
- var servicePath = path.join(process.cwd(),"services",serviceName);
-
- var serviceModule = require(servicePath);
- if(!serviceModule) {
- console.log("模块没有被发现");
- return null;
- }
- global.service_caches[serviceName] = {};
- console.log("*****************************************");
- console.log("拦截服务 => %s",serviceName);
- console.log("*****************************************");
- for(actionName in serviceModule) {
- if(serviceModule && serviceModule[actionName] && typeof(serviceModule[actionName]) == "function") {
- var origFunc = serviceModule[actionName];
- global.service_caches[serviceName][actionName] = Invocation(serviceName,actionName,serviceModule,origFunc);
- console.log("action => %s",actionName);
- }
- }
- // console.log(global.service_caches);
- console.log("*****************************************\n");
- return global.service_caches[serviceName];
- }
- // 设置全局验证函数
- module.exports.setAuthFn = function(authFn) {
- global.service_auth_fn = authFn;
- }
|