UNPKG

lin-cms-test

Version:

The core library of Lin CMS, this package is just for test!

64 lines (63 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); const lodash_1 = require("lodash"); const core_1 = require("./core"); const REG_XP = /(?<=\{)[^}]*(?=\})/g; exports.logger = (template) => { return async (ctx, next) => { await next(); // 取数据,写入到日志中 writeLog(template, ctx); }; }; function writeLog(template, ctx) { const message = parseTemplate(template, ctx.currentUser, ctx.response, ctx.request); if (ctx.matched) { const info = util_1.findAuthAndModule(ctx); let auth = ""; if (info) { auth = lodash_1.get(info, "auth"); } const statusCode = ctx.status || 0; // @ts-ignore core_1.Log.createLog({ message: message, userId: ctx.currentUser.id, userName: ctx.currentUser.nickname, statusCode: statusCode, method: ctx.request.method, path: ctx.request.path, authority: auth }, true); } } function parseTemplate(template, user, reponse, request) { const res = REG_XP.exec(template); if (res) { res.forEach(item => { const index = item.lastIndexOf("."); util_1.assert(index !== -1, item + "中必须包含 . ,且为一个"); const obj = item.substring(0, index); const prop = item.substring(index + 1, item.length); let it; switch (obj) { case "user": it = lodash_1.get(user, prop, ""); break; case "response": it = lodash_1.get(reponse, prop, ""); break; case "request": it = lodash_1.get(request, prop, ""); break; default: it = ""; break; } template = template.replace(`{${item}}`, it); }); } return template; } exports.parseTemplate = parseTemplate;