From 046ce599527552d9c62eb1c9c47c009e8dcfea07 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 27 Nov 2025 10:05:28 +0530 Subject: [PATCH] testing --- app/controllers/auth.controller.js | 132 ++++++++++++++++++++++++----- 1 file changed, 111 insertions(+), 21 deletions(-) diff --git a/app/controllers/auth.controller.js b/app/controllers/auth.controller.js index a9afb02..4209d9b 100644 --- a/app/controllers/auth.controller.js +++ b/app/controllers/auth.controller.js @@ -27,40 +27,130 @@ exports.register = async (req, res) => { }; // Login user +// exports.login = async (req, res) => { +// try { +// const { email, password } = req.body; + +// userRole = 'EstablishmentUser' +// userData = await EstablishmentUser.findOne({ where: { email, is_active : { [Op.or]: [true, 1] } } }); +// if (!userData) { +// userData = await User.findOne({ where: { email, is_active : { [Op.or]: [true, 1] } } }); +// userRole = 'Admin' +// if (!userData) res.status(404).send({'status':"failed",'message':"User not found",'data': ""}); +// } + + +// const validPass = await bcrypt.compare(password, userData.password); +// if (!validPass) res.status(401).send({'status':"failed",'message':"Invalid password",'data': ""}); + + +// if(userRole == 'Admin') +// { +// tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole , last_login : userData.last_login } +// await User.update({ last_login : Date() }, { where: { id: userData.id } }); +// }else{ +// const establishment_data = await Establishment.findByPk(userData.establishment_id); +// tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole , establishment_id: userData.establishment_id , establishment_data , last_login : userData.last_login } +// await EstablishmentUser.update({ last_login : Date(), updated_at: new Date() }, { where: { id: userData.id } }); +// } + +// const token = jwt.sign(tokenData, process.env.JWT_SECRET, { +// expiresIn: "6h", +// }); + +// res.status(200).send({'status':"success",'message':"Login successful",'data': token }); + +// } catch (err) { +// res.status(500).send({'status':"failed",'message':err.message }); +// } +// }; + exports.login = async (req, res) => { try { const { email, password } = req.body; - userRole = 'EstablishmentUser' - userData = await EstablishmentUser.findOne({ where: { email, is_active : { [Op.or]: [true, 1] } } }); + let userRole = null; + let userData = null; + + // Try EstablishmentUser first + userData = await EstablishmentUser.findOne({ where: { email } }); + if (userData) { + userRole = "EstablishmentUser"; + } else { + // Try Admin user + userData = await User.findOne({ where: { email } }); + if (userData) { + userRole = "Admin"; + } + } + + // No user found if (!userData) { - userData = await User.findOne({ where: { email, is_active : { [Op.or]: [true, 1] } } }); - userRole = 'Admin' - if (!userData) res.status(404).send({'status':"failed",'message':"User not found",'data': ""}); + return res.status(404).json({ + status: "failed", + message: "Invalid user", + data: "" + }); } - - + + // Check ACTIVE status + if (!userData.is_active) { + return res.status(403).json({ + status: "failed", + message: "User account is inactive", + data: "" + }); + } + + // Check password const validPass = await bcrypt.compare(password, userData.password); - if (!validPass) res.status(401).send({'status':"failed",'message':"Invalid password",'data': ""}); - - - if(userRole == 'Admin') - { - tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole , last_login : userData.last_login } - await User.update({ last_login : Date() }, { where: { id: userData.id } }); - }else{ - const establishment_data = await Establishment.findByPk(userData.establishment_id); - tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole , establishment_id: userData.establishment_id , establishment_data , last_login : userData.last_login } - await EstablishmentUser.update({ last_login : Date(), updated_at: new Date() }, { where: { id: userData.id } }); + if (!validPass) { + return res.status(401).json({ + status: "failed", + message: "Invalid password", + data: "" + }); } + // Prepare token data + let tokenData = { + id: userData.id, + email: userData.email, + name: userData.name, + role: userRole, + last_login: userData.last_login, + }; + + if (userRole === "EstablishmentUser") { + tokenData.establishment_id = userData.establishment_id; + tokenData.establishment_data = await Establishment.findByPk(userData.establishment_id); + + await EstablishmentUser.update( + { last_login: new Date(), updated_at: new Date() }, + { where: { id: userData.id } } + ); + } else { + await User.update( + { last_login: new Date() }, + { where: { id: userData.id } } + ); + } + + // Generate JWT token const token = jwt.sign(tokenData, process.env.JWT_SECRET, { expiresIn: "6h", }); - res.status(200).send({'status':"success",'message':"Login successful",'data': token }); + return res.status(200).json({ + status: "success", + message: "Login successful", + data: token + }); } catch (err) { - res.status(500).send({'status':"failed",'message':err.message }); + return res.status(500).json({ + status: "failed", + message: err.message, + }); } -}; +}; \ No newline at end of file