From 1a45c82712c055580965a4ede6376bb7d2c0cc9d Mon Sep 17 00:00:00 2001 From: Face <69168154+face-hh@users.noreply.github.com> Date: Sun, 8 Jun 2025 21:45:12 +0300 Subject: [PATCH] fix numeric / empty username bug --- website/src/routes/api/settings/+server.ts | 12 +++++++++--- website/src/routes/settings/+page.svelte | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/website/src/routes/api/settings/+server.ts b/website/src/routes/api/settings/+server.ts index fbdfa4a..90bae35 100644 --- a/website/src/routes/api/settings/+server.ts +++ b/website/src/routes/api/settings/+server.ts @@ -12,15 +12,16 @@ async function validateInputs(name: string, bio: string, username: string, avata throw error(400, 'Display name is required'); } - if (name.trim().length < 2) { + const trimmedName = name.trim(); + if (trimmedName.length < 2) { throw error(400, 'Display name must be at least 2 characters'); } - if (name.trim().length > 50) { + if (trimmedName.length > 50) { throw error(400, 'Display name must be 50 characters or less'); } - if (name && !(await isNameAppropriate(name.trim()))) { + if (!(await isNameAppropriate(trimmedName))) { throw error(400, 'Name contains inappropriate content'); } @@ -37,6 +38,11 @@ async function validateInputs(name: string, bio: string, username: string, avata if (!alphanumericRegex.test(username)) { throw error(400, 'Username must contain only lowercase letters, numbers, and underscores'); } + + const purelyNumericRegex = /^\d+$/; + if (purelyNumericRegex.test(username)) { + throw error(400, 'Username cannot be purely numeric'); + } } if (username && !(await isNameAppropriate(username))) { diff --git a/website/src/routes/settings/+page.svelte b/website/src/routes/settings/+page.svelte index 03f61df..5750af0 100644 --- a/website/src/routes/settings/+page.svelte +++ b/website/src/routes/settings/+page.svelte @@ -125,7 +125,7 @@ try { const fd = new FormData(); - fd.append('name', name); + fd.append('name', name.trim()); fd.append('bio', bio); fd.append('username', username); if (avatarFile?.[0]) fd.append('avatar', avatarFile[0]);