fix: Add email validation to admin user seeding process

This commit is contained in:
Ayman
2026-07-08 07:17:26 +01:00
parent 062cc3c347
commit 0a2641db84
2 changed files with 30 additions and 1 deletions
+16
View File
@@ -7,6 +7,7 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
const { read } = require('read'); const { read } = require('read');
const validator = require('validator');
const initKnex = require('knex'); const initKnex = require('knex');
const knexfile = require('./knexfile'); const knexfile = require('./knexfile');
@@ -51,6 +52,21 @@ const input = async (fieldName, options = {}) => {
isRequired: true, isRequired: true,
}); });
// eslint-disable-next-line no-constant-condition
while (true) {
if (
validator.isEmail(process.env.DEFAULT_ADMIN_EMAIL) &&
process.env.DEFAULT_ADMIN_EMAIL.length <= 256
) {
break;
}
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,
});
}
process.env.DEFAULT_ADMIN_PASSWORD = await input('Password', { process.env.DEFAULT_ADMIN_PASSWORD = await input('Password', {
isRequired: true, isRequired: true,
isPassword: true, isPassword: true,
+14 -1
View File
@@ -6,6 +6,7 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
const bcrypt = require('bcrypt'); const bcrypt = require('bcrypt');
const validator = require('validator');
const USERNAME_REGEX = /^[a-zA-Z0-9]+((_|\.)?[a-zA-Z0-9])*$/; const USERNAME_REGEX = /^[a-zA-Z0-9]+((_|\.)?[a-zA-Z0-9])*$/;
@@ -24,7 +25,7 @@ const buildUserData = () => {
console.warn('Warning: DEFAULT_ADMIN_NAME exceeds 128 characters; truncating.'); console.warn('Warning: DEFAULT_ADMIN_NAME exceeds 128 characters; truncating.');
data.name = process.env.DEFAULT_ADMIN_NAME.slice(0, 128); data.name = process.env.DEFAULT_ADMIN_NAME.slice(0, 128);
} else { } else {
data.name = process.env.DEFAULT_ADMIN_NAME; data.name = process.env.DEFAULT_ADMIN_NAME;
} }
} }
if (process.env.DEFAULT_ADMIN_USERNAME) { if (process.env.DEFAULT_ADMIN_USERNAME) {
@@ -63,6 +64,18 @@ exports.seed = async (knex) => {
process.env.DEFAULT_ADMIN_EMAIL && process.env.DEFAULT_ADMIN_EMAIL.toLowerCase(); process.env.DEFAULT_ADMIN_EMAIL && process.env.DEFAULT_ADMIN_EMAIL.toLowerCase();
if (defaultAdminEmail) { if (defaultAdminEmail) {
if (!validator.isEmail(defaultAdminEmail)) {
throw new Error(
`DEFAULT_ADMIN_EMAIL "${process.env.DEFAULT_ADMIN_EMAIL}" is not a valid e-mail address.`,
);
}
if (defaultAdminEmail.length > 256) {
throw new Error(
`DEFAULT_ADMIN_EMAIL "${process.env.DEFAULT_ADMIN_EMAIL}" exceeds 256 characters.`,
);
}
const userData = buildUserData(); const userData = buildUserData();
let userId; let userId;