login.controller.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { Body, Config, Controller, Inject, Post, Get } from '@midwayjs/core';
  2. import { ApiTags } from '@midwayjs/swagger';
  3. import { LoginDTO, LoginVO, UPwdDTO } from '../../interface/user/login.interface';
  4. import { LoginService } from '../../service/user/login.service';
  5. import { JwtService } from '@midwayjs/jwt';
  6. import { Context } from '@midwayjs/koa';
  7. const assert = require('assert');
  8. import get = require('lodash/get');
  9. @ApiTags(['登录服务'])
  10. @Controller('/login')
  11. export class LoginController {
  12. @Inject()
  13. loginService: LoginService;
  14. @Inject()
  15. jwtService: JwtService;
  16. @Config('jwt.secret')
  17. jwtSecret;
  18. @Config('jwt.expiresIn')
  19. jwtExpiresIn;
  20. @Inject()
  21. ctx: Context;
  22. /**
  23. * 账密登录
  24. * @param data 用户名和密码
  25. * @param type 用户类型
  26. */
  27. @Post('/exam_account')
  28. async toLogin(@Body() data: LoginDTO) {
  29. const user = await this.loginService.loginByAccount(data, 'Admin');
  30. let vo = new LoginVO(user);
  31. vo = JSON.parse(JSON.stringify(vo));
  32. const token = await this.jwtService.sign(vo, this.jwtSecret, {
  33. expiresIn: this.jwtExpiresIn,
  34. });
  35. return token;
  36. }
  37. /**
  38. * 修改密码
  39. * @param data 修改密码所需数据
  40. * @param type 账户类型
  41. */
  42. @Post('/updatePwd/:type')
  43. async updatePwd(@Body() data: UPwdDTO) {
  44. await this.loginService.updatePwd(data, 'Admin');
  45. return 'ok';
  46. }
  47. @Get('/analysis')
  48. async analysisToken() {
  49. const token = get(this.ctx, 'request.header.token');
  50. assert(token, '缺少token信息');
  51. const result = await this.jwtService.decodeSync(token);
  52. return result;
  53. }
  54. }