because I got bored of customising my CV for every job
at main 1.4 kB view raw
1import { AuthCookieService, RequestMetadata } from "@cv/auth"; 2import { Controller, Post, Res } from "@nestjs/common"; 3import type { Response } from "express"; 4import { AuthenticationService } from "../authentication.service"; 5import { RefreshTokenCookie } from "../token/refresh-token-cookie.decorator"; 6import { RefreshTokenResponseDto } from "../token/refresh-token-response.dto"; 7import { TokenExpiration } from "../token/token-expiration.type"; 8 9@Controller("api/auth") 10export class AuthenticationController { 11 constructor( 12 private readonly authenticationService: AuthenticationService, 13 private readonly authCookieService: AuthCookieService, 14 ) {} 15 16 @Post("credentials/refresh") 17 async refreshToken( 18 @RefreshTokenCookie() refresh_token: string, 19 @RequestMetadata() requestMetadata: RequestMetadata, 20 @Res({ passthrough: true }) res: Response, 21 ): Promise<RefreshTokenResponseDto> { 22 const result = await this.authenticationService.refreshToken( 23 { refresh_token }, 24 requestMetadata, 25 ); 26 27 this.authCookieService.setAuthCookies( 28 res, 29 result.access_token, 30 result.refresh_token, 31 ); 32 33 const accessTokenExpiration = TokenExpiration.fromExpiryDate( 34 result.expires_at, 35 ); 36 37 return new RefreshTokenResponseDto({ 38 expiresAt: accessTokenExpiration.expiresAt.toISOString(), 39 expiresInSeconds: accessTokenExpiration.expiresInSeconds, 40 }); 41 } 42}