From 09e73babeaf749d2109d8ccd51acfd537abd07de Mon Sep 17 00:00:00 2001 From: NicoDora Date: Thu, 2 Nov 2023 14:24:48 +0900 Subject: [PATCH] =?UTF-8?q?refactor(#10):=20=EC=BB=A4=EC=8A=A4=ED=85=80=20?= =?UTF-8?q?=EB=8D=B0=EC=BD=94=EB=A0=88=EC=9D=B4=ED=84=B0=20auth=20?= =?UTF-8?q?=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=EC=97=90=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.module.ts | 2 +- src/auth/auth.module.ts | 3 +- src/auth/controllers/auth.controller.ts | 18 +++++------ src/boards/entities/board-image.entity.ts | 4 +-- src/boards/entities/board.entity.ts | 5 ++-- src/config/guards/jwt-access-token.guard.ts | 1 - .../strategis/jwt-access-token.strategy.ts | 30 ------------------- 7 files changed, 14 insertions(+), 49 deletions(-) delete mode 100644 src/config/strategis/jwt-access-token.strategy.ts diff --git a/src/app.module.ts b/src/app.module.ts index a77b208..0ac9ca1 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -24,7 +24,7 @@ import { ScheduleModule } from '@nestjs/schedule'; UserModule, TypeOrmModule.forRoot({ ...TypeORMconfig, // TypeORM 설정 객체 확장 - synchronize: true, // DB 동기화 여부 설정 + synchronize: false, // DB 동기화 여부 설정 }), // TypeOrmModule.forFeature([Image]), ConfigModule.forRoot({ diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts index b09f3bc..12445b8 100644 --- a/src/auth/auth.module.ts +++ b/src/auth/auth.module.ts @@ -6,12 +6,11 @@ import { S3Service } from 'src/common/s3/s3.service'; import { UserImageRepository } from 'src/users/repositories/user-image.repository'; import { TokenRepository } from './repositories/token.repository'; import { TokenService } from './services/token.service'; -import { JwtStrategy } from 'src/config/strategis/jwt-access-token.strategy'; @Module({ imports: [], exports: [TokenService, TokenRepository], controllers: [AuthController], - providers: [AuthService, TokenService, UserRepository, UserImageRepository, TokenRepository, S3Service, JwtStrategy], + providers: [AuthService, TokenService, UserRepository, UserImageRepository, TokenRepository, S3Service], }) export class AuthModule {} diff --git a/src/auth/controllers/auth.controller.ts b/src/auth/controllers/auth.controller.ts index 60b06f6..3a0432d 100644 --- a/src/auth/controllers/auth.controller.ts +++ b/src/auth/controllers/auth.controller.ts @@ -89,9 +89,9 @@ export class AuthController { } @ApiKakaoLogout() + @UseGuards(JwtAccessTokenGuard) @Post('kakao/logout') - async kakaoLogout(@Headers('access_token') accessToken: string) { - const userId = await this.tokenService.decodeToken(accessToken); + async kakaoLogout(@GetUserId() userId: number) { const { socialAccessToken, socialRefreshToken } = await this.tokenService.getUserTokens(userId); await this.tokenService.deleteTokens(userId); @@ -102,9 +102,9 @@ export class AuthController { } @ApiKakaoUnlink() + @UseGuards(JwtAccessTokenGuard) @Post('kakao/unlink') - async kakaoUnlink(@Headers('access_token') accessToken: string) { - const userId = await this.tokenService.decodeToken(accessToken); + async kakaoUnlink(@GetUserId() userId: number) { const { socialAccessToken, socialRefreshToken } = await this.tokenService.getUserTokens(userId); await this.tokenService.deleteTokens(userId); @@ -118,15 +118,13 @@ export class AuthController { @UseGuards(JwtAccessTokenGuard) @Post('naver/logout') async naverLogout(@GetUserId() userId: number) { - console.log('userId: ', userId); - return await this.tokenService.deleteTokens(userId); } @ApiNaverUnlink() + @UseGuards(JwtAccessTokenGuard) @Post('naver/unlink') - async naverUnlink(@Headers('access_token') accessToken: string) { - const userId = await this.tokenService.decodeToken(accessToken); + async naverUnlink(@GetUserId() userId: number) { const { socialAccessToken, socialRefreshToken } = await this.tokenService.getUserTokens(userId); await this.tokenService.deleteTokens(userId); @@ -137,9 +135,9 @@ export class AuthController { } @ApiDeleteAccount() + @UseGuards(JwtAccessTokenGuard) @Delete('account') - async accountDelete(@Headers('access_token') accessToken: string) { - const userId = await this.tokenService.decodeToken(accessToken); + async accountDelete(@GetUserId() userId: number) { await this.s3Service.deleteImagesWithPrefix(userId + '_'); return await this.authService.accountDelete(userId); } diff --git a/src/boards/entities/board-image.entity.ts b/src/boards/entities/board-image.entity.ts index 916256d..6d34134 100644 --- a/src/boards/entities/board-image.entity.ts +++ b/src/boards/entities/board-image.entity.ts @@ -12,9 +12,7 @@ export class BoardImage { @PrimaryGeneratedColumn() id: number; - @ManyToOne(() => Board, (board) => board.boardImages, { - onDelete: 'CASCADE', - }) + @ManyToOne(() => Board, (board) => board.boardImages) @JoinColumn({ name: 'board_id' }) board: Board; diff --git a/src/boards/entities/board.entity.ts b/src/boards/entities/board.entity.ts index 2b75abb..b0aa4f2 100644 --- a/src/boards/entities/board.entity.ts +++ b/src/boards/entities/board.entity.ts @@ -39,7 +39,8 @@ export class Board { @Column('varchar') head: string; - @Column() + @Index({ fulltext: true }) + @Column('text') body: string; @Column() @@ -53,4 +54,4 @@ export class Board { @UpdateDateColumn({ name: 'updated_at' }) updateAt: Date; -} +} \ No newline at end of file diff --git a/src/config/guards/jwt-access-token.guard.ts b/src/config/guards/jwt-access-token.guard.ts index 6cb852e..aa88ba3 100644 --- a/src/config/guards/jwt-access-token.guard.ts +++ b/src/config/guards/jwt-access-token.guard.ts @@ -1,5 +1,4 @@ import { ExecutionContext, Injectable } from "@nestjs/common"; -import { AuthGuard } from "@nestjs/passport"; import { TokenService } from "src/auth/services/token.service"; @Injectable() diff --git a/src/config/strategis/jwt-access-token.strategy.ts b/src/config/strategis/jwt-access-token.strategy.ts deleted file mode 100644 index fec4977..0000000 --- a/src/config/strategis/jwt-access-token.strategy.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { PassportStrategy } from "@nestjs/passport"; -import { Strategy } from 'passport-jwt'; - -@Injectable() -export class JwtStrategy extends PassportStrategy( - Strategy, - 'jwt-access-token', -) { - constructor() { - super({ - jwtFromRequest: (req: Request) => { - return req.headers['access_token']; - }, - ignoreExpiration: true, - secretOrKey: process.env.JWT_SECRET_KEY, - }); - } - - async validate(payload: any) { - console.log('validate: ', payload); - - return { userId: payload.userId }; - } - - async verifyToken(token: string) { - console.log('verifyToken: ', token); - - } -} \ No newline at end of file