From dd7fcbe79a4868ba0fa42fb68dc2e33d956ac921 Mon Sep 17 00:00:00 2001 From: andres Date: Sat, 20 Apr 2024 21:34:16 +0200 Subject: [PATCH] feat: add v2 refresh token --- src/modules/auth/auth.controller.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 363c199..e29f5c9 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -14,6 +14,7 @@ import { UploadedFiles, UseGuards, UseInterceptors, + Version, } from '@nestjs/common' import { CommandBus } from '@nestjs/cqrs' import { FileFieldsInterceptor } from '@nestjs/platform-express' @@ -24,6 +25,7 @@ import { ApiConsumes, ApiNoContentResponse, ApiNotFoundResponse, + ApiOkResponse, ApiOperation, ApiTags, ApiUnauthorizedResponse, @@ -180,8 +182,9 @@ export class AuthController { } @ApiOperation({ - description: 'Get new access token using refresh token', - summary: 'Get new access token using refresh token', + description: 'Deprecated, use v2', + summary: 'Deprecated, use v2', + deprecated: true, }) @ApiUnauthorizedResponse({ description: 'Invalid or missing refreshToken' }) @ApiNoContentResponse({ description: 'New tokens generated successfully' }) @@ -215,6 +218,26 @@ export class AuthController { refreshToken: newTokens.refreshToken, }) + return null + } + + @ApiOperation({ + description: 'Get new access token using refresh token', + summary: 'Get new access token using refresh token', + }) + @ApiUnauthorizedResponse({ description: 'Invalid or missing refreshToken' }) + @ApiOkResponse({ description: 'New tokens generated successfully' }) + @HttpCode(HttpStatus.OK) + @UseGuards(JwtRefreshGuard) + @Post('refresh-token') + @Version('2') + async refreshTokenV2(@Request() req): Promise { + const userId = req.user.id + const shortAccessToken = req.headers['x-short-access-token'] === 'true' + const newTokens = await this.commandBus.execute( + new RefreshTokenCommand(userId, shortAccessToken) + ) + return { accessToken: newTokens.accessToken, refreshToken: newTokens.refreshToken,