From 921c03fad0199436177476523ccb43191e566d16 Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 18 Oct 2025 05:08:19 -0400 Subject: [PATCH 1/5] feat(pam): ui improvements --- .../components/PamAccessAccountModal.tsx | 38 +++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index 9049001e6..c298064ef 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -19,12 +19,44 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) const isDurationValid = useMemo(() => duration && ms(duration || "1s") > 0, [duration]); + const cliDuration = useMemo(() => { + if (!duration) return duration; + + const unit = duration.replace(/[\d\s.-]/g, ""); + + const dayOrLargerUnits = [ + "d", + "day", + "days", + "w", + "week", + "weeks", + "y", + "yr", + "yrs", + "year", + "years" + ]; + + if (unit === "M" || dayOrLargerUnits.includes(unit.toLowerCase())) { + const valueInMs = ms(duration); + const oneHourInMs = 1000 * 60 * 60; + + if (typeof valueInMs === "number" && valueInMs > 0) { + const hours = valueInMs / oneHourInMs; + return `${hours}h`; + } + } + + return duration; + }, [duration]); + const command = useMemo( () => account && account.resource.resourceType === PamResourceType.Postgres - ? `infisical pam db access-account ${account.id} --duration ${duration}` + ? `infisical pam db access-account ${account.id} --duration ${cliDuration}` : "", - [account, duration] + [account, cliDuration] ); if (!account) return null; @@ -48,7 +80,7 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) />
- + Date: Sat, 18 Oct 2025 05:21:54 -0400 Subject: [PATCH 2/5] floor hour value --- .../pam/PamAccountsPage/components/PamAccessAccountModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index c298064ef..a4a52d9ba 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -43,7 +43,7 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) const oneHourInMs = 1000 * 60 * 60; if (typeof valueInMs === "number" && valueInMs > 0) { - const hours = valueInMs / oneHourInMs; + const hours = Math.floor(valueInMs / oneHourInMs); return `${hours}h`; } } From fdf238961b65f27ca01cb39f346eb02063af74eb Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 23 Oct 2025 16:17:37 -0400 Subject: [PATCH 3/5] add support for months (M) --- .../components/PamAccessAccountModal.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index a4a52d9ba..59964609a 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -38,7 +38,16 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) "years" ]; - if (unit === "M" || dayOrLargerUnits.includes(unit.toLowerCase())) { + console.log({ unit, duration }); + + // ms library does not handle months (M) so we do it separately + if (unit === "M") { + const value = parseInt(duration, 10); + if (!isNaN(value) && value > 0) { + const hours = value * 30 * 24; + return `${hours}h`; + } + } else if (dayOrLargerUnits.includes(unit.toLowerCase())) { const valueInMs = ms(duration); const oneHourInMs = 1000 * 60 * 60; From 5bff92fe560b39687f33edbde7c3162614e54c1d Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 23 Oct 2025 16:26:03 -0400 Subject: [PATCH 4/5] type check fix --- .../pam/PamAccountsPage/components/PamAccessAccountModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index 59964609a..351195a59 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -43,7 +43,7 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) // ms library does not handle months (M) so we do it separately if (unit === "M") { const value = parseInt(duration, 10); - if (!isNaN(value) && value > 0) { + if (!Number.isNaN(value) && value > 0) { const hours = value * 30 * 24; return `${hours}h`; } From 50a6c353a09679d98e365660cbd592bc90fdf937 Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 23 Oct 2025 16:29:55 -0400 Subject: [PATCH 5/5] remove console log and lint --- backend/src/lib/config/env.ts | 2 +- .../pam/PamAccountsPage/components/PamAccessAccountModal.tsx | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 2da7a245a..9fc4cff92 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -3,13 +3,13 @@ import { z } from "zod"; import { THsmServiceFactory } from "@app/ee/services/hsm/hsm-service"; import { crypto } from "@app/lib/crypto/cryptography"; import { QueueWorkerProfile } from "@app/lib/types"; +import { TKmsRootConfigDALFactory } from "@app/services/kms/kms-root-config-dal"; import { TSuperAdminDALFactory } from "@app/services/super-admin/super-admin-dal"; import { BadRequestError } from "../errors"; import { removeTrailingSlash } from "../fn"; import { CustomLogger } from "../logger/logger"; import { zpStr } from "../zod"; -import { TKmsRootConfigDALFactory } from "@app/services/kms/kms-root-config-dal"; export const GITLAB_URL = "https://gitlab.com"; diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index 351195a59..2e875979d 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -38,8 +38,6 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) "years" ]; - console.log({ unit, duration }); - // ms library does not handle months (M) so we do it separately if (unit === "M") { const value = parseInt(duration, 10);