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 9049001e6..2e875979d 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -19,12 +19,51 @@ 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" + ]; + + // ms library does not handle months (M) so we do it separately + if (unit === "M") { + const value = parseInt(duration, 10); + if (!Number.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; + + if (typeof valueInMs === "number" && valueInMs > 0) { + const hours = Math.floor(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 +87,7 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account }: Props) />
- +