import { Body, Config, Controller, Inject, Post, Get } from '@midwayjs/core'; import { ApiTags } from '@midwayjs/swagger'; import { LoginDTO, LoginVO, UPwdDTO } from '../../interface/user/login.interface'; import { LoginService } from '../../service/user/login.service'; import { JwtService } from '@midwayjs/jwt'; import { Context } from '@midwayjs/koa'; const assert = require('assert'); import get = require('lodash/get'); @ApiTags(['登录服务']) @Controller('/login') export class LoginController { @Inject() loginService: LoginService; @Inject() jwtService: JwtService; @Config('jwt.secret') jwtSecret; @Config('jwt.expiresIn') jwtExpiresIn; @Inject() ctx: Context; /** * 账密登录 * @param data 用户名和密码 * @param type 用户类型 */ @Post('/exam_account') async toLogin(@Body() data: LoginDTO) { const user = await this.loginService.loginByAccount(data, 'Admin'); let vo = new LoginVO(user); vo = JSON.parse(JSON.stringify(vo)); const token = await this.jwtService.sign(vo, this.jwtSecret, { expiresIn: this.jwtExpiresIn, }); return token; } /** * 修改密码 * @param data 修改密码所需数据 * @param type 账户类型 */ @Post('/updatePwd/:type') async updatePwd(@Body() data: UPwdDTO) { await this.loginService.updatePwd(data, 'Admin'); return 'ok'; } @Get('/analysis') async analysisToken() { const token = get(this.ctx, 'request.header.token'); assert(token, '缺少token信息'); const result = await this.jwtService.decodeSync(token); return result; } }