|
@@ -0,0 +1,31 @@
|
|
|
+import { IMiddleware } from '@midwayjs/core';
|
|
|
+import { Middleware, Inject } from '@midwayjs/decorator';
|
|
|
+import { NextFunction, Context } from '@midwayjs/koa';
|
|
|
+import get = require('lodash/get');
|
|
|
+import { JwtService } from '@midwayjs/jwt';
|
|
|
+
|
|
|
+@Middleware()
|
|
|
+export class CheckTokenMiddleware implements IMiddleware<Context, NextFunction> {
|
|
|
+ @Inject()
|
|
|
+ jwtService: JwtService;
|
|
|
+ resolve() {
|
|
|
+ return async (ctx: Context, next: NextFunction) => {
|
|
|
+ const token: any = get(ctx.request, 'header.token');
|
|
|
+ if (token) {
|
|
|
+ const data = this.jwtService.decodeSync(token);
|
|
|
+ if (data) ctx.user = data;
|
|
|
+ }
|
|
|
+ // 添加管理员身份
|
|
|
+ const adminToken: any = get(ctx.request, 'header.admin-token');
|
|
|
+ if (adminToken) {
|
|
|
+ const data = this.jwtService.decodeSync(adminToken);
|
|
|
+ if (data) ctx.admin = data;
|
|
|
+ }
|
|
|
+ await next();
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ static getName(): string {
|
|
|
+ return 'checkToken';
|
|
|
+ }
|
|
|
+}
|