From d699b33dcb640dad00519cb94b0de0c8f5c9b39c Mon Sep 17 00:00:00 2001 From: Lauris Skraucis Date: Wed, 12 Jun 2024 11:05:35 +0200 Subject: [PATCH] chore: v2 managed user inform when access token expires (#15414) --- .../oauth-client-users/oauth-client-users.controller.ts | 1 + .../outputs/create-managed-user.output.ts | 5 ++++- .../oauth-clients/services/oauth-clients-users.service.ts | 3 ++- apps/api/v2/src/modules/tokens/tokens.repository.ts | 1 + apps/api/v2/swagger/documentation.json | 6 +++++- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts index 5c6bff4ede..29f544b5dd 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/oauth-client-users.controller.ts @@ -91,6 +91,7 @@ export class OAuthClientUsersController { data: { user: this.getResponseUser(user), accessToken: tokens.accessToken, + accessTokenExpiresAt: tokens.accessTokenExpiresAt.valueOf(), refreshToken: tokens.refreshToken, }, }; diff --git a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/outputs/create-managed-user.output.ts b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/outputs/create-managed-user.output.ts index 4528068fc3..a34bab773c 100644 --- a/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/outputs/create-managed-user.output.ts +++ b/apps/api/v2/src/modules/oauth-clients/controllers/oauth-client-users/outputs/create-managed-user.output.ts @@ -1,7 +1,7 @@ import { ManagedUserOutput } from "@/modules/oauth-clients/controllers/oauth-client-users/outputs/managed-user.output"; import { ApiProperty } from "@nestjs/swagger"; import { Type } from "class-transformer"; -import { IsEnum, IsString, ValidateNested } from "class-validator"; +import { IsEnum, IsNumber, IsString, ValidateNested } from "class-validator"; import { SUCCESS_STATUS, ERROR_STATUS } from "@calcom/platform-constants"; @@ -18,6 +18,9 @@ class CreateManagedUserData { @IsString() refreshToken!: string; + + @IsNumber() + accessTokenExpiresAt!: number; } export class CreateManagedUserOutput { diff --git a/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts b/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts index e4e8f60201..691f33c59b 100644 --- a/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts +++ b/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts @@ -62,7 +62,7 @@ export class OAuthClientUsersService { await this.userRepository.update(user.id, { name: body.name ?? user.username ?? undefined }); } - const { accessToken, refreshToken } = await this.tokensRepository.createOAuthTokens( + const { accessToken, refreshToken, accessTokenExpiresAt } = await this.tokensRepository.createOAuthTokens( oAuthClientId, user.id ); @@ -78,6 +78,7 @@ export class OAuthClientUsersService { user, tokens: { accessToken, + accessTokenExpiresAt, refreshToken, }, }; diff --git a/apps/api/v2/src/modules/tokens/tokens.repository.ts b/apps/api/v2/src/modules/tokens/tokens.repository.ts index 80bbc027fd..448b5fde64 100644 --- a/apps/api/v2/src/modules/tokens/tokens.repository.ts +++ b/apps/api/v2/src/modules/tokens/tokens.repository.ts @@ -89,6 +89,7 @@ export class TokensRepository { return { accessToken: accessToken.secret, + accessTokenExpiresAt: accessToken.expiresAt, refreshToken: refreshToken.secret, }; } diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index e8fa397b89..78bdca87a6 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -1833,12 +1833,16 @@ }, "refreshToken": { "type": "string" + }, + "accessTokenExpiresAt": { + "type": "number" } }, "required": [ "user", "accessToken", - "refreshToken" + "refreshToken", + "accessTokenExpiresAt" ] }, "CreateManagedUserOutput": {