From ff78e28e6f269d82f3970e24c31e8af3588e2d54 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Jan 2026 09:44:28 +0530 Subject: [PATCH] existing users email restricted --- .../establishment_user.controller.js | 32 ++++++++++++------- app/controllers/user.controller.js | 17 ++++++++++ 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/app/controllers/establishment_user.controller.js b/app/controllers/establishment_user.controller.js index f750e45..9ac8920 100644 --- a/app/controllers/establishment_user.controller.js +++ b/app/controllers/establishment_user.controller.js @@ -6,6 +6,7 @@ const crypto = require("crypto"); const { sendEmailService } = require("../services/email.service"); const { sanitizeForLog } = require("../utils/sanitize"); const logger = require("../services/logger"); +const User = db.user; // Create User exports.createUser = async (req, res) => { @@ -35,6 +36,26 @@ exports.createUser = async (req, res) => { }); } email = email.trim().toLowerCase(); + + const existingUser = await EstablishmentUser.findOne({ + where: { email, is_active: true } + }); + + if (existingUser) { + return res.status(409).json({ + status: "error", + message: "Email already exists" + }); + } + + const existingAdminUser = await User.findOne({ where: { email, is_active: true } }); + if (existingAdminUser) { + logger.warn(`Email already exists in Admin Users: ${email}`); + return res.status(409).send({ + status: "failed", + message: "This email address is already registered in the admin users." + }); + } if (typeof password !== "string" || password.length < 6) { return res.status(400).json({ @@ -56,17 +77,6 @@ exports.createUser = async (req, res) => { gender = gender.charAt(0).toUpperCase() + gender.slice(1); } - const existingUser = await EstablishmentUser.findOne({ - where: { email, is_active: true } - }); - - if (existingUser) { - return res.status(409).json({ - status: "error", - message: "Email already exists" - }); - } - // Store plain password for email before hashing const plainPasswordForEmail = password; const hashedPassword = await bcrypt.hash(password, 10); diff --git a/app/controllers/user.controller.js b/app/controllers/user.controller.js index c66098c..d511604 100644 --- a/app/controllers/user.controller.js +++ b/app/controllers/user.controller.js @@ -5,12 +5,29 @@ const logger = require("../services/logger"); require("dotenv").config(); const User = db.user; +const EstablishmentUser = db.EstablishmentUser; // Create User exports.createUser = async (req, res) => { try { const { name, email, password } = req.body; + const existingUser = await User.findOne({ where: { email, is_active: true } }); + const establishmentExist = await EstablishmentUser.findOne({ where: { email, is_active: true }}); + if (existingUser) { + logger.warn(`Email already exists: ${email}`); + return res.status(409).send({ + status: "failed", + message: "Email already exists" + }); + } + if (establishmentExist) { + logger.warn(`Email already exists in Company Profile: ${email}`); + return res.status(409).send({ + status: "failed", + message: "This email address is already registered in the company profile." + }); + } const hashedPassword = await bcrypt.hash(password, 10); const user = await User.create({ name, email, password: hashedPassword });