From 0cb2f6797be3b5c4dd12d24521c0e5991d4c5afd 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 17:10:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20add=20@NeedAuth=20Decorator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.module.ts | 3 --- src/auth/auth.controller.ts | 8 +++----- src/common/decorators/auth.decorator.ts | 11 +++++++++++ 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 src/common/decorators/auth.decorator.ts diff --git a/src/app.module.ts b/src/app.module.ts index fd1b6a4..2b780b9 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,10 +1,8 @@ -import { APP_GUARD } from '@nestjs/core' import { Logger, Module } from '@nestjs/common' import { ConfigModule } from '@nestjs/config' import { PrismaModule, loggingMiddleware } from 'nestjs-prisma' import { UsersModule } from './users/users.module' import { AuthModule } from './auth/auth.module' -import { JwtAuthGuard } from './common/guards/jwt-auth.guard' @Module({ imports: [ @@ -24,6 +22,5 @@ import { JwtAuthGuard } from './common/guards/jwt-auth.guard' AuthModule, ], controllers: [], - providers: [{ provide: APP_GUARD, useClass: JwtAuthGuard }], }) export class AppModule {} diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 9feee0d..c0fb87a 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -1,30 +1,28 @@ import { Body, Controller, Get, Post } from '@nestjs/common' import { AuthService } from './auth.service' import { CreateUserDto } from 'src/users/dto/create-user.dto' -import { ApiTags, ApiBearerAuth } from '@nestjs/swagger' +import { ApiTags } from '@nestjs/swagger' import { LoginInputDto } from './dto/login-input.dto' import { UserEntity } from 'src/users/entities/user.entity' import { User } from 'src/common/decorators/user.decorator' -import { SkipAuth } from 'src/common/decorators/skip-auth.decorator' +import { NeedAuth } from 'src/common/decorators/auth.decorator' @ApiTags('auth') @Controller() export class AuthController { constructor(private readonly authService: AuthService) {} - @SkipAuth() @Post('api/register') async register(@Body() userData: CreateUserDto) { return this.authService.register(userData) } - @SkipAuth() @Post('api/login') async login(@Body() user: LoginInputDto) { return this.authService.login(user.email, user.password) } - @ApiBearerAuth() + @NeedAuth() @Get('api/profile') async getUserInfo(@User() user: UserEntity) { return user diff --git a/src/common/decorators/auth.decorator.ts b/src/common/decorators/auth.decorator.ts new file mode 100644 index 0000000..523c791 --- /dev/null +++ b/src/common/decorators/auth.decorator.ts @@ -0,0 +1,11 @@ +import { applyDecorators, UseGuards } from '@nestjs/common' +import { JwtAuthGuard } from '../guards/jwt-auth.guard' +import { ApiBearerAuth, ApiUnauthorizedResponse } from '@nestjs/swagger' + +export function NeedAuth() { + return applyDecorators( + UseGuards(JwtAuthGuard), + ApiBearerAuth(), + ApiUnauthorizedResponse({ description: 'Unauthorized' }), + ) +}