Control updates from the ui

This commit is contained in:
Owen
2026-05-21 15:43:31 -07:00
parent dee0ca6864
commit 6d4afd0953
9 changed files with 333 additions and 44 deletions

View File

@@ -40,7 +40,8 @@ const updateOrgBodySchema = z
settingsLogRetentionDaysConnection: z
.number()
.min(build === "saas" ? 0 : -1)
.optional()
.optional(),
settingsEnableGlobalNewtAutoUpdate: z.boolean().optional()
})
.refine((data) => Object.keys(data).length > 0, {
error: "At least one field must be provided for update"
@@ -118,6 +119,15 @@ export async function updateOrg(
if (!hasPasswordExpirationFeature) {
parsedBody.data.passwordExpiryDays = undefined;
}
const hasNewtAutoUpdateFeature = await isLicensedOrSubscribed(
orgId,
tierMatrix[TierFeature.NewtAutoUpdate]
);
if (!hasNewtAutoUpdateFeature) {
parsedBody.data.settingsEnableGlobalNewtAutoUpdate = false; // force it off
}
if (build == "saas") {
const { tier } = await getOrgTierData(orgId);
@@ -136,8 +146,10 @@ export async function updateOrg(
if (maxRetentionDays !== null) {
if (
parsedBody.data.settingsLogRetentionDaysRequest !== undefined &&
parsedBody.data.settingsLogRetentionDaysRequest > maxRetentionDays
parsedBody.data.settingsLogRetentionDaysRequest !==
undefined &&
parsedBody.data.settingsLogRetentionDaysRequest >
maxRetentionDays
) {
return next(
createHttpError(
@@ -147,8 +159,10 @@ export async function updateOrg(
);
}
if (
parsedBody.data.settingsLogRetentionDaysAccess !== undefined &&
parsedBody.data.settingsLogRetentionDaysAccess > maxRetentionDays
parsedBody.data.settingsLogRetentionDaysAccess !==
undefined &&
parsedBody.data.settingsLogRetentionDaysAccess >
maxRetentionDays
) {
return next(
createHttpError(
@@ -158,8 +172,10 @@ export async function updateOrg(
);
}
if (
parsedBody.data.settingsLogRetentionDaysAction !== undefined &&
parsedBody.data.settingsLogRetentionDaysAction > maxRetentionDays
parsedBody.data.settingsLogRetentionDaysAction !==
undefined &&
parsedBody.data.settingsLogRetentionDaysAction >
maxRetentionDays
) {
return next(
createHttpError(
@@ -169,8 +185,10 @@ export async function updateOrg(
);
}
if (
parsedBody.data.settingsLogRetentionDaysConnection !== undefined &&
parsedBody.data.settingsLogRetentionDaysConnection > maxRetentionDays
parsedBody.data.settingsLogRetentionDaysConnection !==
undefined &&
parsedBody.data.settingsLogRetentionDaysConnection >
maxRetentionDays
) {
return next(
createHttpError(
@@ -196,7 +214,9 @@ export async function updateOrg(
settingsLogRetentionDaysAction:
parsedBody.data.settingsLogRetentionDaysAction,
settingsLogRetentionDaysConnection:
parsedBody.data.settingsLogRetentionDaysConnection
parsedBody.data.settingsLogRetentionDaysConnection,
settingsEnableGlobalNewtAutoUpdate:
parsedBody.data.settingsEnableGlobalNewtAutoUpdate
})
.where(eq(orgs.orgId, orgId))
.returning();