auth.service.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { BadRequestException, Injectable } from '@nestjs/common'
  2. import { JwtService } from '@nestjs/jwt'
  3. import { auth } from '@prisma/client'
  4. import { hash, verify } from 'argon2'
  5. import { PrismaService } from 'src/prisma/prisma.service'
  6. import LoginDto from './dto/login.dto'
  7. import registerDto from './dto/register.dto'
  8. @Injectable()
  9. export class AuthService {
  10. constructor(private prisma: PrismaService, private jwt: JwtService) {}
  11. async register(dto: registerDto) {
  12. const paw = await hash(dto.paw)
  13. const user = await this.prisma.auth.create({
  14. data: {
  15. username: dto.name,
  16. password: paw,
  17. email: dto.emali,
  18. user: {
  19. create: {
  20. avatar: '',
  21. },
  22. },
  23. },
  24. })
  25. delete user.password
  26. const token = await this.token(user)
  27. return { cod: 200, msg: '注册成功', token }
  28. }
  29. async login(dto: LoginDto) {
  30. const user = await this.prisma.auth.findUnique({
  31. where: {
  32. username: dto.name,
  33. },
  34. })
  35. if (!user) {
  36. throw new BadRequestException('用户名错误')
  37. }
  38. if (!(await verify(user.password, dto.paw))) {
  39. throw new BadRequestException('密码错误')
  40. }
  41. delete user.password
  42. const token = await this.token(user)
  43. return { cod: 200, msg: '登陆成功', token }
  44. }
  45. async token({ auth_id, username }: auth) {
  46. const token = await this.jwt.signAsync({
  47. username,
  48. sub: auth_id,
  49. })
  50. return token
  51. }
  52. }