@@ -93,6 +93,8 @@ import {
9393 verify_update_email_swagger ,
9494} from './auth.swagger' ;
9595import { ConfirmPasswordDto } from './dto/confirm-password.dto' ;
96+ import { RefreshTokenDto } from './dto/refresh-token.dto' ;
97+ import { LogoutDto } from './dto/logout.dto' ;
9698
9799@ApiTags ( 'Authentication' )
98100@Controller ( 'auth' )
@@ -144,7 +146,7 @@ export class AuthController {
144146 const { user, access_token, refresh_token } = await this . auth_service . signupStep3 ( dto ) ;
145147
146148 this . httpOnlyRefreshToken ( response , refresh_token ) ;
147- return { user, access_token } ;
149+ return { user, access_token, refresh_token } ;
148150 }
149151
150152 @ApiOperation ( login_swagger . operation )
@@ -159,7 +161,7 @@ export class AuthController {
159161 const { access_token, refresh_token, user } = await this . auth_service . login ( login_dto ) ;
160162
161163 this . httpOnlyRefreshToken ( response , refresh_token ) ;
162- return { access_token, user } ;
164+ return { user , access_token, refresh_token } ;
163165 }
164166
165167 @ApiOperation ( generate_otp_swagger . operation )
@@ -240,14 +242,19 @@ export class AuthController {
240242 @ApiBearerAuth ( 'JWT-auth' )
241243 @UseGuards ( JwtAuthGuard )
242244 @ApiOperation ( logout_swagger . operation )
245+ @ApiBody ( { type : LogoutDto , required : false } )
243246 @ApiCookieAuth ( 'refresh_token' )
244247 @ApiOkResponse ( logout_swagger . responses . success )
245248 @ApiBadRequestErrorResponse ( ERROR_MESSAGES . NO_REFRESH_TOKEN_PROVIDED )
246249 @ApiUnauthorizedErrorResponse ( ERROR_MESSAGES . INVALID_OR_EXPIRED_TOKEN )
247250 @ResponseMessage ( SUCCESS_MESSAGES . LOGGED_OUT )
248251 @Post ( 'logout' )
249- async logout ( @Req ( ) req : Request , @Res ( { passthrough : true } ) response : Response ) {
250- const refresh_token = req . cookies [ 'refresh_token' ] ;
252+ async logout (
253+ @Body ( ) body : LogoutDto ,
254+ @Req ( ) req : Request ,
255+ @Res ( { passthrough : true } ) response : Response
256+ ) {
257+ const refresh_token = body . refresh_token || req . cookies [ 'refresh_token' ] ;
251258 if ( ! refresh_token ) throw new BadRequestException ( 'No refresh token provided' ) ;
252259 return await this . auth_service . logout ( refresh_token , response ) ;
253260 }
@@ -256,31 +263,42 @@ export class AuthController {
256263 @ApiCookieAuth ( 'refresh_token' )
257264 @UseGuards ( JwtAuthGuard )
258265 @ApiOperation ( logout_all_swagger . operation )
266+ @ApiBody ( { type : LogoutDto , required : false } )
259267 @ApiOkResponse ( logout_all_swagger . responses . success )
260268 @ApiBadRequestErrorResponse ( ERROR_MESSAGES . NO_REFRESH_TOKEN_PROVIDED )
261269 @ApiUnauthorizedErrorResponse ( ERROR_MESSAGES . INVALID_OR_EXPIRED_TOKEN )
262270 @ResponseMessage ( SUCCESS_MESSAGES . LOGGED_OUT_ALL )
263271 @Post ( 'logout-all' )
264- async logoutAll ( @Req ( ) req : Request , @Res ( { passthrough : true } ) response : Response ) {
265- const refresh_token = req . cookies [ 'refresh_token' ] ;
272+ async logoutAll (
273+ @Body ( ) body : LogoutDto ,
274+ @Req ( ) req : Request ,
275+ @Res ( { passthrough : true } ) response : Response
276+ ) {
277+ const refresh_token = body . refresh_token || req . cookies [ 'refresh_token' ] ;
266278 if ( ! refresh_token ) throw new BadRequestException ( 'No refresh token provided' ) ;
267279 return await this . auth_service . logoutAll ( refresh_token , response ) ;
268280 }
269281
270282 @ApiOperation ( refresh_token_swagger . operation )
283+ @ApiBody ( { type : RefreshTokenDto , required : false } )
284+ @ApiCookieAuth ( 'refresh_token' )
271285 @ApiOkResponse ( refresh_token_swagger . responses . success )
272286 @ApiBadRequestErrorResponse ( ERROR_MESSAGES . NO_REFRESH_TOKEN_PROVIDED )
273287 @ApiUnauthorizedErrorResponse ( ERROR_MESSAGES . INVALID_OR_EXPIRED_TOKEN )
274288 @ResponseMessage ( SUCCESS_MESSAGES . NEW_ACCESS_TOKEN )
275289 @Post ( 'refresh' )
276- async refresh ( @Req ( ) req : Request , @Res ( { passthrough : true } ) response : Response ) {
277- const refresh_token_cookie = req . cookies [ 'refresh_token' ] ;
278- if ( ! refresh_token_cookie ) throw new BadRequestException ( 'No refresh token provided' ) ;
290+ async refresh (
291+ @Body ( ) body : RefreshTokenDto ,
292+ @Req ( ) req : Request ,
293+ @Res ( { passthrough : true } ) response : Response
294+ ) {
295+ const refresh_token_input = body . refresh_token || req . cookies [ 'refresh_token' ] ;
296+ if ( ! refresh_token_input ) throw new BadRequestException ( 'No refresh token provided' ) ;
279297
280298 const { access_token, refresh_token } =
281- await this . auth_service . refresh ( refresh_token_cookie ) ;
299+ await this . auth_service . refresh ( refresh_token_input ) ;
282300 this . httpOnlyRefreshToken ( response , refresh_token ) ;
283- return { access_token } ;
301+ return { access_token, refresh_token } ;
284302 }
285303
286304 @ApiOperation ( exchange_token_swagger . operation )
@@ -423,6 +441,7 @@ export class AuthController {
423441
424442 return {
425443 access_token,
444+ refresh_token,
426445 user : user ,
427446 } ;
428447 }
@@ -576,6 +595,7 @@ export class AuthController {
576595
577596 return {
578597 access_token,
598+ refresh_token,
579599 user : user ,
580600 } ;
581601 }
@@ -652,7 +672,7 @@ export class AuthController {
652672 await this . auth_service . oauthCompletionStep2 ( dto ) ;
653673
654674 this . httpOnlyRefreshToken ( response , refresh_token ) ;
655- return { access_token, user } ;
675+ return { access_token, refresh_token , user } ;
656676 }
657677
658678 @ApiBearerAuth ( 'JWT-auth' )
0 commit comments