2023-08-23 13:59:16 +08:00

56 lines
1.7 KiB
TypeScript

import {Application, Request, Response} from "express";
import {RouteHandleFunction, RouteHandleFunctionParam} from "../core/types";
import {home} from "./home";
import {appList, reportToServer, appEvent, eventData} from "./reportor";
import {decodeUserToken, getUserInfo, loginHandler} from "./user";
const excludes = [
'/home',
'/api/report',
'/api/user/login',
]
//
function createRoute(handler: RouteHandleFunction) {
return (req: Request, res: Response<any, Record<string, any>>) => {
// console.log('params', req.headers)
const params = {
path: req.path,
param: req.params,
query: req.query,
body: req.body,
method: req.method,
headers: req.headers,
res,
req
};
const path = req.path;
console.log('request path:', path)
if (excludes.includes(path)) {
return handler(params);
}
const token = req.headers.authorization
if (!token) {
res.send({code: 403, message: '请先登录'})
return;
}
decodeUserToken(token).then(user => {
handler({
...params,
user: typeof (user) == "string" ? JSON.parse(user) : user
})
})
}
}
// 初始化路由
export function initRoutes(app: Application) {
app.get('/home', createRoute(home))
app.all('/api/report', createRoute(reportToServer))
app.all('/api/app/list', createRoute(appList))
app.all('/api/app/event', createRoute(appEvent))
app.all('/api/app/event-data', createRoute(eventData))
app.all('/api/user/login', createRoute(loginHandler))
app.all('/api/user/info', createRoute(getUserInfo))
}