From 2f5252faad5cfede2030088dd988204a9b964d79 Mon Sep 17 00:00:00 2001 From: Ayman Date: Wed, 8 Jul 2026 07:07:46 +0100 Subject: [PATCH] fix: Add email uniqueness check to admin user seeding process --- server/db/create-admin-user.js | 13 +++++++++++-- server/db/seeds/default.js | 6 ++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/server/db/create-admin-user.js b/server/db/create-admin-user.js index 9c80b24b..ee643602 100644 --- a/server/db/create-admin-user.js +++ b/server/db/create-admin-user.js @@ -58,10 +58,19 @@ const input = async (fieldName, options = {}) => { validator.isEmail(process.env.DEFAULT_ADMIN_EMAIL) && process.env.DEFAULT_ADMIN_EMAIL.length <= 256 ) { - break; + const existingUser = await knex('user_account') + .where('email', process.env.DEFAULT_ADMIN_EMAIL.toLowerCase()) + .first(); + + if (!existingUser) { + break; + } + + console.log('Email is already in use.'); + } else { + console.log('Email must be a valid e-mail address with no more than 256 characters.'); } - console.log('Email must be a valid e-mail address with no more than 256 characters.'); process.env.DEFAULT_ADMIN_EMAIL = await input('Email', { isRequired: true, }); diff --git a/server/db/seeds/default.js b/server/db/seeds/default.js index 9ce0982d..8ac183bc 100644 --- a/server/db/seeds/default.js +++ b/server/db/seeds/default.js @@ -76,6 +76,12 @@ exports.seed = async (knex) => { ); } + const existingEmailUser = await knex('user_account').where('email', defaultAdminEmail).first(); + + if (existingEmailUser) { + throw new Error(`User with DEFAULT_ADMIN_EMAIL "${defaultAdminEmail}" already exists.`); + } + const userData = buildUserData(); if (userData.username) {