From eeab92719a35d14362efdeef60924ecf06eac89d Mon Sep 17 00:00:00 2001 From: miloschwartz Date: Mon, 27 Oct 2025 09:52:25 -0700 Subject: [PATCH] add smaller time values and update translations --- messages/en-US.json | 14 +++++++++++++ src/app/[orgId]/settings/general/page.tsx | 24 +++++++++++++---------- src/components/OrgPolicyResult.tsx | 20 +++++++++++++------ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/messages/en-US.json b/messages/en-US.json index f75d95c6..7374de9e 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -1363,6 +1363,7 @@ "youCanNowAccessOrganization": "You can now access this organization", "reauthenticationRequired": "Session Length", "reauthenticationDescription": "This organization requires you to log in every {maxDays} days.", + "reauthenticationDescriptionHours": "This organization requires you to log in every {maxHours} hours.", "reauthenticateNow": "Log In Again", "adminEnabled2FaOnYourAccount": "Your administrator has enabled two-factor authentication for {email}. Please complete the setup process to continue.", "securityKeyAdd": "Add Security Key", @@ -1766,10 +1767,23 @@ "maxSessionLengthDescription": "Set the maximum duration for user sessions. After this time, users will need to re-authenticate.", "maxSessionLengthDisabledDescription": "This feature requires a valid license (Enterprise) or active subscription (SaaS)", "selectSessionLength": "Select session length", + "unenforced": "Unenforced", + "1Hour": "1 hour", + "3Hours": "3 hours", + "6Hours": "6 hours", + "12Hours": "12 hours", + "1DaySession": "1 day", + "3Days": "3 days", + "7Days": "7 days", + "14Days": "14 days", + "30DaysSession": "30 days", + "90DaysSession": "90 days", + "180DaysSession": "180 days", "passwordExpiryDays": "Password Expiry", "editPasswordExpiryDescription": "Set the number of days before users are required to change their password.", "selectPasswordExpiry": "Select password expiry", "30Days": "30 days", + "1Day": "1 day", "60Days": "60 days", "90Days": "90 days", "180Days": "180 days", diff --git a/src/app/[orgId]/settings/general/page.tsx b/src/app/[orgId]/settings/general/page.tsx index d96dbb65..b9f44141 100644 --- a/src/app/[orgId]/settings/general/page.tsx +++ b/src/app/[orgId]/settings/general/page.tsx @@ -56,18 +56,24 @@ import { SecurityFeaturesAlert } from "@app/components/SecurityFeaturesAlert"; // Session length options in hours const SESSION_LENGTH_OPTIONS = [ - { value: null, label: "Unenforced" }, - { value: 72, label: "3 days" }, // 3 * 24 = 72 hours - { value: 168, label: "7 days" }, // 7 * 24 = 168 hours - { value: 336, label: "14 days" }, // 14 * 24 = 336 hours - { value: 720, label: "30 days" }, // 30 * 24 = 720 hours - { value: 2160, label: "90 days" }, // 90 * 24 = 2160 hours - { value: 4320, label: "180 days" } // 180 * 24 = 4320 hours + { value: null, labelKey: "unenforced" }, + { value: 1, labelKey: "1Hour" }, + { value: 3, labelKey: "3Hours" }, + { value: 6, labelKey: "6Hours" }, + { value: 12, labelKey: "12Hours" }, + { value: 24, labelKey: "1DaySession" }, + { value: 72, labelKey: "3Days" }, + { value: 168, labelKey: "7Days" }, + { value: 336, labelKey: "14Days" }, + { value: 720, labelKey: "30DaysSession" }, + { value: 2160, labelKey: "90DaysSession" }, + { value: 4320, labelKey: "180DaysSession" } ]; // Password expiry options in days - will be translated in component const PASSWORD_EXPIRY_OPTIONS = [ { value: null, labelKey: "neverExpire" }, + { value: 1, labelKey: "1Day" }, { value: 30, labelKey: "30Days" }, { value: 60, labelKey: "60Days" }, { value: 90, labelKey: "90Days" }, @@ -465,9 +471,7 @@ export default function GeneralPage() { : option.value.toString() } > - { - option.label - } + {t(option.labelKey)} ) )} diff --git a/src/components/OrgPolicyResult.tsx b/src/components/OrgPolicyResult.tsx index bc46aabf..793a41e0 100644 --- a/src/components/OrgPolicyResult.tsx +++ b/src/components/OrgPolicyResult.tsx @@ -76,16 +76,24 @@ export default function OrgPolicyResult({ // Add max session length policy if the organization has it enforced if (accessRes.policies?.maxSessionLength) { const maxSessionPolicy = accessRes.policies?.maxSessionLength; - const maxDays = Math.round(maxSessionPolicy.maxSessionLengthHours / 24); - const daysAgo = Math.round(maxSessionPolicy.sessionAgeHours / 24); + const maxHours = maxSessionPolicy.maxSessionLengthHours; + + // Use hours if less than 24, otherwise convert to days + const useHours = maxHours < 24; + const maxTime = useHours ? maxHours : Math.round(maxHours / 24); + + const descriptionKey = useHours + ? "reauthenticationDescriptionHours" + : "reauthenticationDescription"; + + const description = useHours + ? t(descriptionKey, { maxHours }) + : t(descriptionKey, { maxDays: maxTime }); policies.push({ id: "max-session-length", name: t("reauthenticationRequired"), - description: t("reauthenticationDescription", { - maxDays, - daysAgo - }), + description, compliant: maxSessionPolicy.compliant, action: !maxSessionPolicy.compliant ? async () => {