add smaller time values and update translations

This commit is contained in:
miloschwartz
2025-10-27 09:52:25 -07:00
parent 4cfd1b1ff5
commit eeab92719a
3 changed files with 42 additions and 16 deletions

View File

@@ -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",

View File

@@ -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)}
</SelectItem>
)
)}

View File

@@ -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 () => {