visop
Version:
A simple CLI for scaffolding visible operation projects.
102 lines (92 loc) • 4.23 kB
JavaScript
/**
* 配置route
*/
var jwt = require('express-jwt');
// var tokenManager = require('./token_manager');
var setting = require('../config/setting');
var routeMap = require('../config/router.json');
// var router = require('express').Router();
var rbac = require('./rbac');
var log = require('./log'); // 加载日志
var sanitize = require('./sanitize.js');
var checkValidate = require('./checkValidate.js');
var _ = require('lodash')
// var checkLogin = require('./checkLogin').checkLogin;
var path = require('path')
var fse = require('fs-extra')
var jwtOptions = {
secret: setting.secretToken,
// credentialsRequired: true,
getToken: function fromHeaderOrQuerystring (req) { //自定义获取前端传过来的token方式
return req.headers['x-access-token']; //获取前端请求头中的x-access-token字段
},
isRevoked: isRevokedCallback
};
function isRevokedCallback(req, payload, done){
console.log("1");
}
module.exports = function(router){
// var router = app.Router;
//遍历路由配置文件,动态生成route
_.forOwn(routeMap, function(obj, key){
var method = obj.method;
var route = obj.route;
var authority = obj.authority;
var action = obj.action;
//根据配置中的权限是否为空来判断是否添加鉴权中间件
try{
var controllerPath = path.resolve(path.join('.','api',obj.route))
console.log(controllerPath)
var controller = require(controllerPath);
console.log(route, obj.controller, action);
router.get('/'+route, sanitize, checkValidate , controller[action]);
router.post('/'+route, sanitize, checkValidate , controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// 开发模式下不鉴权
// if(global.ENV == 'production' || global.ENV == 'test'){
// // if(authority && ENV == 'production' ){
// if(authority){
// //1、检查是否有token;2、检查token是否有效;3、检查是否有权限访问接口
// router[method](route,
// tokenManager.validateToken,
// rbac(authority),
// sanitize, controller[action]);
// }else{
// router['get'](route,tokenManager.touchToken, sanitize, controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// }
// }else{
// router['get'](route,tokenManager.touchToken, sanitize, controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// }
}catch(err){
log.error('router['+method+
']('+route+', authority:'+
authority+', '+obj.controller+'['+action+']);')
log.error(err);
}
})
// 加载用户自定义路由
var visopActionConfig = path.join(setting.CODE_PATH, 'visop', 'actions.json')
var visopActionJs = path.join(setting.CODE_PATH, 'visop', 'actions.js')
if(fse.existsSync(visopActionConfig) && fse.existsSync(visopActionJs)){
var actionConfig = require(visopActionConfig).data
var actionJs = require(visopActionJs)
for(var i=0;i<actionConfig.length;i++){
if(actionConfig[i].__visoproute){
try{
if(actionJs[actionConfig[i].id]){
console.log('begin add custom route:', actionConfig[i].id);
router.get('/'+actionConfig[i].id, actionJs[actionConfig[i].id])
router.post('/'+actionConfig[i].id, actionJs[actionConfig[i].id])
console.log('success add custom route:', actionConfig[i].id);
}
}catch(e){
console.log(e)
}
}
}
}
// app.use(router);
return router;
};