login.service.ts 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import { Provide } from '@midwayjs/core';
  2. import { FrameworkErrorEnum, GetModel, ServiceError } from 'free-midway-component';
  3. import { isEqual, upperFirst } from 'lodash';
  4. import { LoginDTO, LoginType, UPwdDTO } from '../interface/login.interface';
  5. @Provide()
  6. export class LoginService {
  7. /**
  8. * 账密登录
  9. * @param data 用户名和密码
  10. * @param type 用户类型
  11. * @returns 用户信息/空值
  12. */
  13. async loginByAccount(data: LoginDTO, type: LoginType) {
  14. const model = GetModel(upperFirst(type));
  15. const user = await model.findOne({ account: data.account }, '+password').lean();
  16. if (!user) throw new ServiceError('未找到用户信息', FrameworkErrorEnum.NOT_FOUND_DATA);
  17. if (!isEqual(user.password.secret, data.password)) throw new ServiceError('密码错误', FrameworkErrorEnum.SERVICE_FAULT);
  18. return user;
  19. }
  20. async updatePwd(data: UPwdDTO, type: LoginType) {
  21. const model = GetModel(upperFirst(type));
  22. const user = await model.findById(data._id);
  23. if (!user) new ServiceError('未找到用户信息!', FrameworkErrorEnum.DATA_NOT_FOUND);
  24. user.password = data.password;
  25. await user.save();
  26. }
  27. }