Skip to content

Commit ee9aa31

Browse files
authored
Merge pull request #483 from boostcampwm-2024/refactor/auth-req-type
♻️ refactor: 인증 payload 사용 방법 변경
2 parents 8e6541a + 8797d1c commit ee9aa31

File tree

7 files changed

+61
-28
lines changed

7 files changed

+61
-28
lines changed

server/src/comment/controller/comment.controller.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ import {
88
Param,
99
Patch,
1010
Post,
11-
Req,
1211
UseGuards,
1312
} from '@nestjs/common';
1413
import { ApiTags } from '@nestjs/swagger';
1514
import { CommentService } from '../service/comment.service';
1615
import { ApiCreateComment } from '../api-docs/createComment.api-docs';
1716
import { ApiDeleteComment } from '../api-docs/deleteComment.api-docs';
1817
import { ApiUpdateComment } from '../api-docs/updateComment.api-docs';
19-
import { JwtGuard } from '../../common/guard/jwt.guard';
18+
import { JwtGuard, Payload } from '../../common/guard/jwt.guard';
2019
import { ApiResponse } from '../../common/response/common.response';
2120
import { CreateCommentRequestDto } from '../dto/request/createComment.dto';
2221
import { DeleteCommentRequestDto } from '../dto/request/deleteComment.dto';
2322
import { UpdateCommentRequestDto } from '../dto/request/updateComment.dto';
2423
import { GetCommentRequestDto } from '../dto/request/getComment.dto';
2524
import { ApiGetComment } from '../api-docs/getComment.api-docs';
25+
import { CurrentUser } from '../../common/decorator';
2626

2727
@ApiTags('Comment')
2828
@Controller('comment')
@@ -43,26 +43,35 @@ export class CommentController {
4343
@Post()
4444
@UseGuards(JwtGuard)
4545
@HttpCode(HttpStatus.CREATED)
46-
async createComment(@Req() req, @Body() commentDto: CreateCommentRequestDto) {
47-
await this.commentService.create(req.user, commentDto);
46+
async createComment(
47+
@CurrentUser() user: Payload,
48+
@Body() commentDto: CreateCommentRequestDto,
49+
) {
50+
await this.commentService.create(user, commentDto);
4851
return ApiResponse.responseWithNoContent('댓글 등록을 성공했습니다.');
4952
}
5053

5154
@ApiDeleteComment()
5255
@Delete()
5356
@UseGuards(JwtGuard)
5457
@HttpCode(HttpStatus.OK)
55-
async deleteComment(@Req() req, @Body() commentDto: DeleteCommentRequestDto) {
56-
await this.commentService.delete(req.user, commentDto);
58+
async deleteComment(
59+
@CurrentUser() user: Payload,
60+
@Body() commentDto: DeleteCommentRequestDto,
61+
) {
62+
await this.commentService.delete(user, commentDto);
5763
return ApiResponse.responseWithNoContent('댓글 삭제를 성공했습니다.');
5864
}
5965

6066
@ApiUpdateComment()
6167
@Patch()
6268
@UseGuards(JwtGuard)
6369
@HttpCode(HttpStatus.OK)
64-
async updateComment(@Req() req, @Body() commentDto: UpdateCommentRequestDto) {
65-
await this.commentService.update(req.user, commentDto);
70+
async updateComment(
71+
@CurrentUser() user: Payload,
72+
@Body() commentDto: UpdateCommentRequestDto,
73+
) {
74+
await this.commentService.update(user, commentDto);
6675
return ApiResponse.responseWithNoContent('댓글 수정을 성공했습니다.');
6776
}
6877
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
2+
import { Payload } from '../guard/jwt.guard';
3+
4+
export const CurrentUser = createParamDecorator(
5+
(data: unknown, ctx: ExecutionContext): Payload | null => {
6+
const request = ctx.switchToHttp().getRequest();
7+
return request.user;
8+
},
9+
);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './current-user.decorator';

server/src/file/controller/file.controller.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
Delete,
55
UseInterceptors,
66
UploadedFile,
7-
Req,
87
Param,
98
UseGuards,
109
BadRequestException,
@@ -15,13 +14,14 @@ import {
1514
import { FileInterceptor } from '@nestjs/platform-express';
1615
import { FileService } from '../service/file.service';
1716
import { ApiTags } from '@nestjs/swagger';
18-
import { JwtGuard } from '../../common/guard/jwt.guard';
17+
import { JwtGuard, Payload } from '../../common/guard/jwt.guard';
1918
import { createDynamicStorage } from '../../common/disk/diskStorage';
2019
import { ApiResponse } from '../../common/response/common.response';
2120
import { ApiUploadProfileFile } from '../api-docs/uploadProfileFile.api-docs';
2221
import { ApiDeleteFile } from '../api-docs/deleteFile.api-docs';
2322
import { DeleteFileRequestDto } from '../dto/request/deleteFile.dto';
2423
import { UploadFileQueryDto } from '../dto/request/uploadFile.dto';
24+
import { CurrentUser } from '../../common/decorator';
2525

2626
@ApiTags('File')
2727
@Controller('file')
@@ -36,15 +36,15 @@ export class FileController {
3636
async upload(
3737
@UploadedFile() file: any,
3838
@Query() query: UploadFileQueryDto,
39-
@Req() req,
39+
@CurrentUser() user: Payload,
4040
) {
4141
if (!file) {
4242
throw new BadRequestException('파일이 선택되지 않았습니다.');
4343
}
4444

4545
return ApiResponse.responseWithData(
4646
'파일 업로드에 성공했습니다.',
47-
await this.fileService.create(file, Number.parseInt(req.user.id)),
47+
await this.fileService.create(file, user.id),
4848
);
4949
}
5050

server/src/like/controller/like.controller.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import {
77
HttpStatus,
88
Param,
99
Post,
10-
Req,
1110
UseGuards,
1211
UseInterceptors,
1312
} from '@nestjs/common';
14-
import { JwtGuard } from '../../common/guard/jwt.guard';
13+
import { JwtGuard, Payload } from '../../common/guard/jwt.guard';
1514
import { ApiResponse } from '../../common/response/common.response';
1615
import { LikeService } from '../service/like.service';
1716
import { ApiTags } from '@nestjs/swagger';
@@ -20,6 +19,7 @@ import { ApiDeleteLike } from '../api-docs/deleteLike.api-docs';
2019
import { ManageLikeRequestDto } from '../dto/request/manageLike.dto';
2120
import { ApiGetLike } from '../api-docs/getLike.api-docs';
2221
import { InjectUserInterceptor } from '../../common/auth/jwt.interceptor';
22+
import { CurrentUser } from '../../common/decorator';
2323

2424
@ApiTags('Like')
2525
@Controller('like')
@@ -30,28 +30,37 @@ export class LikeController {
3030
@Get('/:feedId')
3131
@HttpCode(HttpStatus.OK)
3232
@UseInterceptors(InjectUserInterceptor)
33-
async getLike(@Req() req, @Param() feedLikeDto: ManageLikeRequestDto) {
33+
async getLike(
34+
@CurrentUser() user: Payload | null,
35+
@Param() feedLikeDto: ManageLikeRequestDto,
36+
) {
3437
return ApiResponse.responseWithData(
3538
'좋아요 조회를 성공했습니다.',
36-
await this.likeService.get(req.user, feedLikeDto),
39+
await this.likeService.get(user, feedLikeDto),
3740
);
3841
}
3942

4043
@ApiCreateLike()
4144
@Post()
4245
@UseGuards(JwtGuard)
4346
@HttpCode(HttpStatus.CREATED)
44-
async createLike(@Req() req, @Body() feedLikeDto: ManageLikeRequestDto) {
45-
await this.likeService.create(req.user, feedLikeDto);
47+
async createLike(
48+
@CurrentUser() user: Payload,
49+
@Body() feedLikeDto: ManageLikeRequestDto,
50+
) {
51+
await this.likeService.create(user, feedLikeDto);
4652
return ApiResponse.responseWithNoContent('좋아요 등록을 성공했습니다.');
4753
}
4854

4955
@ApiDeleteLike()
5056
@Delete('/:feedId')
5157
@UseGuards(JwtGuard)
5258
@HttpCode(HttpStatus.OK)
53-
async deleteLike(@Req() req, @Param() feedLikeDto: ManageLikeRequestDto) {
54-
await this.likeService.delete(req.user, feedLikeDto);
59+
async deleteLike(
60+
@CurrentUser() user: Payload,
61+
@Param() feedLikeDto: ManageLikeRequestDto,
62+
) {
63+
await this.likeService.delete(user, feedLikeDto);
5564
return ApiResponse.responseWithNoContent('좋아요 삭제를 성공했습니다.');
5665
}
5766
}

server/src/like/service/like.service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ export class LikeService {
1919
private readonly dataSource: DataSource,
2020
) {}
2121

22-
async get(userInformation: Payload, feedLikeGetDto: ManageLikeRequestDto) {
22+
async get(
23+
userInformation: Payload | null,
24+
feedLikeGetDto: ManageLikeRequestDto,
25+
) {
2326
await this.feedService.getFeed(feedLikeGetDto.feedId);
2427
let isLike = false;
2528

server/src/user/controller/user.controller.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
Patch,
99
Post,
1010
Query,
11-
Req,
1211
Res,
1312
UseGuards,
1413
} from '@nestjs/common';
@@ -23,7 +22,7 @@ import { CheckEmailDuplicationRequestDto } from '../dto/request/checkEmailDuplic
2322
import { LoginUserRequestDto } from '../dto/request/loginUser.dto';
2423
import { Response } from 'express';
2524
import { ApiLoginUser } from '../api-docs/loginUser.api-docs';
26-
import { JwtGuard, RefreshJwtGuard } from '../../common/guard/jwt.guard';
25+
import { JwtGuard, Payload, RefreshJwtGuard } from '../../common/guard/jwt.guard';
2726
import { ApiRefreshToken } from '../api-docs/refreshToken.api-docs';
2827
import { ApiLogoutUser } from '../api-docs/logoutUser.api-docs';
2928
import { UpdateUserRequestDto } from '../dto/request/updateUser.dto';
@@ -35,6 +34,7 @@ import { ResetPasswordRequestDto } from '../dto/request/resetPassword.dto';
3534
import { ForgotPasswordRequestDto } from '../dto/request/forgotPassword.dto';
3635
import { ApiForgotPassword } from '../api-docs/forgotPassword.api-docs';
3736
import { ApiResetPassword } from '../api-docs/resetPassword.api-docs';
37+
import { CurrentUser } from '../../common/decorator';
3838

3939
@ApiTags('User')
4040
@Controller('user')
@@ -93,11 +93,10 @@ export class UserController {
9393
@Post('/refresh-token')
9494
@HttpCode(HttpStatus.OK)
9595
@UseGuards(RefreshJwtGuard)
96-
async refreshAccessToken(@Req() req) {
97-
const userInformation = req.user;
96+
async refreshAccessToken(@CurrentUser() user: Payload) {
9897
return ApiResponse.responseWithData(
9998
'엑세스 토큰을 재발급했습니다.',
100-
this.userService.refreshAccessToken(userInformation),
99+
this.userService.refreshAccessToken(user),
101100
);
102101
}
103102

@@ -114,8 +113,11 @@ export class UserController {
114113
@Patch('/profile')
115114
@HttpCode(HttpStatus.OK)
116115
@UseGuards(JwtGuard)
117-
async updateUser(@Body() updateUserDto: UpdateUserRequestDto, @Req() req) {
118-
await this.userService.updateUser(req.user.id, updateUserDto);
116+
async updateUser(
117+
@Body() updateUserDto: UpdateUserRequestDto,
118+
@CurrentUser() user: Payload,
119+
) {
120+
await this.userService.updateUser(user.id, updateUserDto);
119121
return ApiResponse.responseWithNoContent(
120122
'사용자 프로필 정보가 성공적으로 수정되었습니다.',
121123
);

0 commit comments

Comments
 (0)