From 205689e13032fe3541194615cca7192eeedf9432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E7=A7=8B=E6=97=AD?= Date: Thu, 16 Feb 2023 15:43:38 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20use=20global=20jwt-auth.guard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/auth/auth.controller.ts | 4 +--- src/auth/auth.module.ts | 2 +- src/auth/auth.service.ts | 2 +- src/auth/{models/token.model.ts => dto/token.dto.ts} | 8 -------- src/auth/{ => strategies}/jwt.strategy.ts | 3 +-- src/{auth => common/guards}/jwt-auth.guard.ts | 0 src/main.ts | 3 +++ 7 files changed, 7 insertions(+), 15 deletions(-) rename src/auth/{models/token.model.ts => dto/token.dto.ts} (59%) rename src/auth/{ => strategies}/jwt.strategy.ts (88%) rename src/{auth => common/guards}/jwt-auth.guard.ts (100%) diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 20a69da..bf047f1 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -1,9 +1,8 @@ -import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common' +import { Body, Controller, Get, Post } from '@nestjs/common' import { AuthService } from './auth.service' import { CreateUserDto } from 'src/users/dto/create-user.dto' import { ApiTags } from '@nestjs/swagger' import { LoginInputDto } from './dto/login-input.dto' -import { JwtAuthGuard } from './jwt-auth.guard' import { UserEntity } from 'src/users/entities/user.entity' import { User } from 'src/common/decorators/user.decorator' @@ -22,7 +21,6 @@ export class AuthController { return this.authService.login(user.email, user.password) } - @UseGuards(JwtAuthGuard) @Get('api/profile') async getUserInfo(@User() user: UserEntity) { return user diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts index 2a81ada..eaddfe2 100644 --- a/src/auth/auth.module.ts +++ b/src/auth/auth.module.ts @@ -3,7 +3,7 @@ import { AuthService } from './auth.service' import { AuthController } from './auth.controller' import { UsersModule } from 'src/users/users.module' import { JwtService } from '@nestjs/jwt' -import { JwtStrategy } from './jwt.strategy' +import { JwtStrategy } from './strategies/jwt.strategy' @Module({ controllers: [AuthController], diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index 0b1c219..d3201ff 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -1,6 +1,6 @@ import { Injectable, BadRequestException } from '@nestjs/common' import { PasswordService } from 'src/users/password.service' -import { Token } from './models/token.model' +import { Token } from './dto/token.dto' import { JwtService } from '@nestjs/jwt' import { ConfigService } from '@nestjs/config' import { UsersService } from 'src/users/users.service' diff --git a/src/auth/models/token.model.ts b/src/auth/dto/token.dto.ts similarity index 59% rename from src/auth/models/token.model.ts rename to src/auth/dto/token.dto.ts index 22db965..5f3fd81 100644 --- a/src/auth/models/token.model.ts +++ b/src/auth/dto/token.dto.ts @@ -7,11 +7,3 @@ export class Token { @ApiProperty() refreshToken: string } - -export class TokenPayload { - userId: string - /** Issued at */ - iat: number - /** Expiration time */ - exp: number -} diff --git a/src/auth/jwt.strategy.ts b/src/auth/strategies/jwt.strategy.ts similarity index 88% rename from src/auth/jwt.strategy.ts rename to src/auth/strategies/jwt.strategy.ts index 25668c0..3c2702e 100644 --- a/src/auth/jwt.strategy.ts +++ b/src/auth/strategies/jwt.strategy.ts @@ -3,7 +3,6 @@ import { PassportStrategy } from '@nestjs/passport' import { Injectable, UnauthorizedException } from '@nestjs/common' import { ConfigService } from '@nestjs/config' import { User } from '@prisma/client' -import { TokenPayload } from './models/token.model' import { PrismaService } from 'nestjs-prisma' @Injectable() @@ -18,7 +17,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) { }) } - async validate(payload: TokenPayload): Promise { + async validate(payload: { userId: string }): Promise { const user = await this.prismaService.user.findUnique({ where: { id: payload.userId }, }) diff --git a/src/auth/jwt-auth.guard.ts b/src/common/guards/jwt-auth.guard.ts similarity index 100% rename from src/auth/jwt-auth.guard.ts rename to src/common/guards/jwt-auth.guard.ts diff --git a/src/main.ts b/src/main.ts index 0d212e0..f35e335 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,12 +4,15 @@ import { ConfigService } from '@nestjs/config' import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger' import { PrismaClientExceptionFilter, PrismaService } from 'nestjs-prisma' import { AppModule } from './app.module' +import { JwtAuthGuard } from './common/guards/jwt-auth.guard' async function bootstrap() { const app = await NestFactory.create(AppModule) // Validation app.useGlobalPipes(new ValidationPipe({ whitelist: true })) + // Global Guard + app.useGlobalGuards(new JwtAuthGuard()) // enable shutdown hook const prismaService = app.get(PrismaService)