Merge pull request #4691 from Infisical/ENG-3959

feat(pam): ui improvements
This commit is contained in:
Andre
2025-10-23 16:41:59 -04:00
committed by GitHub
2 changed files with 43 additions and 4 deletions
@@ -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)
/>
<FormLabel label="CLI Command" className="mt-4" />
<div className="flex gap-2">
<Input value={command} isDisabled className="opacity-50" />
<Input value={command} isDisabled />
<IconButton
ariaLabel="copy"
variant="outline_bg"