From 7fbc2ea737fd595bf87e11ebe87dc21e9536cc8d Mon Sep 17 00:00:00 2001 From: Ayman Date: Wed, 8 Jul 2026 07:03:05 +0100 Subject: [PATCH] fix: Add username uniqueness check to admin user seeding --- server/db/create-admin-user.js | 18 +++++++++++++----- server/db/seeds/default.js | 10 ++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/server/db/create-admin-user.js b/server/db/create-admin-user.js index 77f45194..9c80b24b 100644 --- a/server/db/create-admin-user.js +++ b/server/db/create-admin-user.js @@ -97,12 +97,20 @@ const input = async (fieldName, options = {}) => { USERNAME_REGEX.test(process.env.DEFAULT_ADMIN_USERNAME); if (isValid) { - break; - } + const existingUser = await knex('user_account') + .where('username', process.env.DEFAULT_ADMIN_USERNAME.toLowerCase()) + .first(); - console.log( - 'Username must be 3-32 characters and contain only letters, digits, underscores, and dots (e.g., john_doe).', - ); + if (!existingUser) { + break; + } + + console.log('Username is already in use.'); + } else { + console.log( + 'Username must be 3-32 characters and contain only letters, digits, underscores, and dots (e.g., john_doe).', + ); + } process.env.DEFAULT_ADMIN_USERNAME = await input('Username'); diff --git a/server/db/seeds/default.js b/server/db/seeds/default.js index ac0296b0..9ce0982d 100644 --- a/server/db/seeds/default.js +++ b/server/db/seeds/default.js @@ -78,6 +78,16 @@ exports.seed = async (knex) => { const userData = buildUserData(); + if (userData.username) { + const existingUsernameUser = await knex('user_account') + .where('username', userData.username) + .first(); + + if (existingUsernameUser) { + throw new Error(`User with DEFAULT_ADMIN_USERNAME "${userData.username}" already exists.`); + } + } + let userId; try { [{ id: userId }] = await knex('user_account').insert(