diff --git a/src/controllers/AuthController.ts b/src/controllers/AuthController.ts index 7d551a4..d6d8d81 100644 --- a/src/controllers/AuthController.ts +++ b/src/controllers/AuthController.ts @@ -41,14 +41,20 @@ export class AuthController { @ResponseSchema(PasswordNeededError) @ResponseSchema(InvalidCredentialsError) @OpenAPI({ description: 'Create a new access token object' }) - async logout(@Body({ validate: true }) handleLogout: HandleLogout) { + async logout(@Body({ validate: true }) handleLogout: HandleLogout, @CookieParam("lfk_backend__refresh_token") refresh_token: string, @Res() response: any) { + if (refresh_token && refresh_token.length != 0 && handleLogout.token == undefined) { + handleLogout.token = refresh_token; + } + let logout; try { logout = await handleLogout.logout() + await response.cookie('lfk_backend__refresh_token', "expired", { expires: new Date(Date.now()), httpOnly: true }); + response.cookie('lfk_backend__refresh_token_expires_at', "expired", { expires: new Date(Date.now()), httpOnly: true }); } catch (error) { throw error; } - return logout + return response.send(logout) } @Post("/refresh") @@ -58,7 +64,7 @@ export class AuthController { @ResponseSchema(UserNotFoundError) @ResponseSchema(RefreshTokenCountInvalidError) @OpenAPI({ description: 'refresh a access token' }) - async refresh(@CookieParam("lfk_backend__refresh_token") refresh_token: string, @Res() response: any, @Body({ validate: true }) refreshAuth: RefreshAuth) { + async refresh(@Body({ validate: true }) refreshAuth: RefreshAuth, @CookieParam("lfk_backend__refresh_token") refresh_token: string, @Res() response: any) { if (refresh_token && refresh_token.length != 0 && refreshAuth.token == undefined) { refreshAuth.token = refresh_token; } diff --git a/src/models/actions/HandleLogout.ts b/src/models/actions/HandleLogout.ts index 5ecab38..37c30c4 100644 --- a/src/models/actions/HandleLogout.ts +++ b/src/models/actions/HandleLogout.ts @@ -1,4 +1,4 @@ -import { IsString } from 'class-validator'; +import { IsOptional, IsString } from 'class-validator'; import * as jsonwebtoken from 'jsonwebtoken'; import { getConnectionManager } from 'typeorm'; import { config } from '../../config'; @@ -8,7 +8,8 @@ import { Logout } from '../responses/ResponseLogout'; export class HandleLogout { @IsString() - token: string; + @IsOptional() + token?: string; public async logout(): Promise { let logout: Logout = new Logout();