feat: add v2 refresh token

This commit is contained in:
2024-04-20 21:34:16 +02:00
parent ed518787d5
commit dd7fcbe79a

View File

@@ -14,6 +14,7 @@ import {
UploadedFiles, UploadedFiles,
UseGuards, UseGuards,
UseInterceptors, UseInterceptors,
Version,
} from '@nestjs/common' } from '@nestjs/common'
import { CommandBus } from '@nestjs/cqrs' import { CommandBus } from '@nestjs/cqrs'
import { FileFieldsInterceptor } from '@nestjs/platform-express' import { FileFieldsInterceptor } from '@nestjs/platform-express'
@@ -24,6 +25,7 @@ import {
ApiConsumes, ApiConsumes,
ApiNoContentResponse, ApiNoContentResponse,
ApiNotFoundResponse, ApiNotFoundResponse,
ApiOkResponse,
ApiOperation, ApiOperation,
ApiTags, ApiTags,
ApiUnauthorizedResponse, ApiUnauthorizedResponse,
@@ -180,8 +182,9 @@ export class AuthController {
} }
@ApiOperation({ @ApiOperation({
description: 'Get new access token using refresh token', description: 'Deprecated, use v2',
summary: 'Get new access token using refresh token', summary: 'Deprecated, use v2',
deprecated: true,
}) })
@ApiUnauthorizedResponse({ description: 'Invalid or missing refreshToken' }) @ApiUnauthorizedResponse({ description: 'Invalid or missing refreshToken' })
@ApiNoContentResponse({ description: 'New tokens generated successfully' }) @ApiNoContentResponse({ description: 'New tokens generated successfully' })
@@ -215,6 +218,26 @@ export class AuthController {
refreshToken: newTokens.refreshToken, 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<LoginResponse> {
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 { return {
accessToken: newTokens.accessToken, accessToken: newTokens.accessToken,
refreshToken: newTokens.refreshToken, refreshToken: newTokens.refreshToken,