Skip to content

Commit

Permalink
Merge pull request #139 from modern-agile-team/feature/board-like
Browse files Browse the repository at this point in the history
  • Loading branch information
hobiJeong authored Nov 20, 2023
2 parents 85f9cb4 + 7aa3425 commit ca59a15
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 17 deletions.
23 changes: 6 additions & 17 deletions src/boards/controllers/boards-like.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { ApiDeleteBoardLike } from '../swagger-decorators/delete-board-like.deco
import { TokenService } from 'src/auth/services/token.service';
import { GetUserId } from 'src/common/decorators/get-userId.decorator';
import { JwtAccessTokenGuard } from 'src/config/guards/jwt-access-token.guard';
import { JwtOptionalGuard } from 'src/config/guards/jwt-optional.guard';

@ApiTags('BOARDS-LIKE')
@UsePipes(ValidationPipe)
Expand All @@ -40,28 +41,16 @@ export class BoardsLikeController {

@ApiGetBoardLikeCount()
@Get('like')
@UseGuards(JwtAccessTokenGuard)
@UseGuards(JwtOptionalGuard)
async getBoardsLike(
@GetUserId() userId: number,
@Query('boardId', ParseIntPipe) boardId: number,
) {
try {
return this.boardsLikeService.getBoardLikesAndIsLike(boardId, userId);
} catch (error) {
if (
(error.status === 401 &&
error.message === '유효하지 않은 토큰입니다.') ||
(error.status === 403 && error.message === '만료된 토큰입니다.') ||
(error.status === 404 &&
error.message === '사용자를 찾을 수 없습니다.') ||
(error.status === 411 &&
error.message === '토큰이 제공되지 않았습니다.')
) {
return this.boardsLikeService.getBoardLikes(boardId);
}
console.error(error);
throw error;
if (userId === undefined) {
return this.boardsLikeService.getBoardLikes(boardId);
}

return this.boardsLikeService.getBoardLikesAndIsLike(boardId, userId);
}

@ApiDeleteBoardLike()
Expand Down
23 changes: 23 additions & 0 deletions src/config/guards/jwt-optional.guard.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { ExecutionContext, Injectable } from '@nestjs/common';
import { TokenService } from 'src/auth/services/token.service';

@Injectable()
export class JwtOptionalGuard {
constructor(private tokenService: TokenService) {}

async canActivate(context: ExecutionContext) {
const request = context.switchToHttp().getRequest();
const accessToken = request.headers['access_token'];
if (!accessToken) {
const userId = undefined;
request.user = { userId };
return true;
}

const userId = await this.tokenService.decodeToken(accessToken);

request.user = { userId };

return true;
}
}

0 comments on commit ca59a15

Please sign in to comment.