From 614c7130330e4af00eaa6345d79616bb8c698b78 Mon Sep 17 00:00:00 2001 From: Blair Currey <12960453+BlairCurrey@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:14:17 -0500 Subject: [PATCH 01/26] feat(frontend): disallow api secret update and change tenant form to submit sections independently --- packages/frontend/app/lib/validate.server.ts | 26 ++- .../frontend/app/routes/tenants.$tenantId.tsx | 209 +++++++++++------- 2 files changed, 148 insertions(+), 87 deletions(-) diff --git a/packages/frontend/app/lib/validate.server.ts b/packages/frontend/app/lib/validate.server.ts index 8e91af96a2..97e8e4404c 100644 --- a/packages/frontend/app/lib/validate.server.ts +++ b/packages/frontend/app/lib/validate.server.ts @@ -130,20 +130,32 @@ export const updateWalletAddressSchema = z }) .merge(uuidSchema) -export const updateTenantSchema = z +export const updateTenantGeneralSchema = z + .object({ + publicName: z.string().optional(), + email: z.string().email().or(z.literal('')) + }) + .merge(uuidSchema) + +export const updateTenantIpSchema = z + .object({ + idpSecret: z.string().optional(), + idpConsentUrl: z.string().optional() + }) + .merge(uuidSchema) + +export const updateTenantSensitiveSchema = z .object({ apiSecret: z .string() .min(10, { message: 'API Secret should be at least 10 characters long' }) - .max(255, { message: 'Maximum length of API Secret is 255 characters' }), - publicName: z.string().optional(), - email: z.string().email().or(z.literal('')), - idpConsentUrl: z.string().optional(), - idpSecret: z.string().optional() + .max(255, { message: 'Maximum length of API Secret is 255 characters' }) }) .merge(uuidSchema) export const createTenantSchema = z .object({}) - .merge(updateTenantSchema) + .merge(updateTenantGeneralSchema) + .merge(updateTenantIpSchema) + .merge(updateTenantSensitiveSchema) .omit({ id: true }) diff --git a/packages/frontend/app/routes/tenants.$tenantId.tsx b/packages/frontend/app/routes/tenants.$tenantId.tsx index 3cd6a6d38f..3180e668f5 100644 --- a/packages/frontend/app/routes/tenants.$tenantId.tsx +++ b/packages/frontend/app/routes/tenants.$tenantId.tsx @@ -12,7 +12,7 @@ import { useSubmit } from '@remix-run/react' import { type FormEvent, useState, useRef } from 'react' -import { z } from 'zod' +import { z, ZodSchema } from 'zod' import { DangerZone, PageHeader } from '~/components' import { Button, ErrorPanel, Input, PasswordInput } from '~/components/ui' import { @@ -21,8 +21,12 @@ import { } from '~/components/ConfirmationDialog' import { updateTenant, deleteTenant, whoAmI } from '~/lib/api/tenant.server' import { messageStorage, setMessageAndRedirect } from '~/lib/message.server' -import type { createTenantSchema } from '~/lib/validate.server' -import { updateTenantSchema, uuidSchema } from '~/lib/validate.server' +import { + updateTenantGeneralSchema, + updateTenantIpSchema, + updateTenantSensitiveSchema, + uuidSchema +} from '~/lib/validate.server' import type { ZodFieldErrors } from '~/shared/types' import { checkAuthAndRedirect } from '../lib/kratos_checks.server' import { getTenantInfo } from '~/lib/api/tenant.server' @@ -87,18 +91,12 @@ export default function ViewTenantPage() { > )}
-