From b8e663e8f40c2f40c7af8983e216ba88ab3e8541 Mon Sep 17 00:00:00 2001 From: xianren Date: Thu, 16 Apr 2026 22:33:01 +0800 Subject: [PATCH] feat: add maxLength constraints to auth and settings form inputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gives users immediate client-side feedback and prevents pathologically long values from being typed. Caps match Zod schema limits where they exist; email uses the RFC 5321 maximum. Files touched (5): - (home)/login/LocalLoginForm.tsx — email → 254 - (home)/register/page.tsx — email → 254 - dashboard/.../user-settings/.../ProfileContent.tsx — display name → 100 - components/settings/general-settings-manager.tsx — search space name → 100 - components/settings/roles-manager.tsx — role name (create+edit dialogs) → 100, role description (create+edit dialogs) → 500 Closes #948 --- surfsense_web/app/(home)/login/LocalLoginForm.tsx | 1 + surfsense_web/app/(home)/register/page.tsx | 1 + .../user-settings/components/ProfileContent.tsx | 1 + .../components/settings/general-settings-manager.tsx | 1 + surfsense_web/components/settings/roles-manager.tsx | 4 ++++ 5 files changed, 8 insertions(+) diff --git a/surfsense_web/app/(home)/login/LocalLoginForm.tsx b/surfsense_web/app/(home)/login/LocalLoginForm.tsx index 608543b37..a0326e39b 100644 --- a/surfsense_web/app/(home)/login/LocalLoginForm.tsx +++ b/surfsense_web/app/(home)/login/LocalLoginForm.tsx @@ -158,6 +158,7 @@ export function LocalLoginForm() { type="email" autoComplete="username" required + maxLength={254} placeholder="you@example.com" value={username} onChange={(e) => setUsername(e.target.value)} diff --git a/surfsense_web/app/(home)/register/page.tsx b/surfsense_web/app/(home)/register/page.tsx index f9e387cf7..00f142567 100644 --- a/surfsense_web/app/(home)/register/page.tsx +++ b/surfsense_web/app/(home)/register/page.tsx @@ -237,6 +237,7 @@ export default function RegisterPage() { type="email" autoComplete="email" required + maxLength={254} placeholder="you@example.com" value={email} onChange={(e) => setEmail(e.target.value)} diff --git a/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/ProfileContent.tsx b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/ProfileContent.tsx index 6d9ce22be..b7a594f01 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/ProfileContent.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/ProfileContent.tsx @@ -94,6 +94,7 @@ export function ProfileContent() { id="display-name" type="text" autoComplete="name" + maxLength={100} placeholder={user?.email?.split("@")[0]} value={displayName} onChange={(e) => setDisplayName(e.target.value)} diff --git a/surfsense_web/components/settings/general-settings-manager.tsx b/surfsense_web/components/settings/general-settings-manager.tsx index f3beb2014..75316a9cd 100644 --- a/surfsense_web/components/settings/general-settings-manager.tsx +++ b/surfsense_web/components/settings/general-settings-manager.tsx @@ -148,6 +148,7 @@ export function GeneralSettingsManager({ searchSpaceId }: GeneralSettingsManager setName(e.target.value)} diff --git a/surfsense_web/components/settings/roles-manager.tsx b/surfsense_web/components/settings/roles-manager.tsx index 0c97cbdb4..7f59ecd66 100644 --- a/surfsense_web/components/settings/roles-manager.tsx +++ b/surfsense_web/components/settings/roles-manager.tsx @@ -876,6 +876,7 @@ function CreateRoleDialog({ setName(e.target.value)} @@ -885,6 +886,7 @@ function CreateRoleDialog({ setDescription(e.target.value)} @@ -1034,6 +1036,7 @@ function EditRoleDialog({ setName(e.target.value)} @@ -1043,6 +1046,7 @@ function EditRoleDialog({ setDescription(e.target.value)}