login merged for both user : GWM

This commit is contained in:
Gowtham M 2025-10-23 09:36:20 +05:30
parent dd60e960cb
commit 132d6c1cb8
4 changed files with 78 additions and 80 deletions

View File

@ -4,6 +4,7 @@ const jwt = require("jsonwebtoken");
require("dotenv").config();
const User = db.user;
const EstablishmentUser = db.EstablishmentUser;
// Register new user
exports.register = async (req, res) => {
@ -29,13 +30,27 @@ exports.login = async (req, res) => {
try {
const { email, password } = req.body;
const user = await User.findOne({ where: { email } });
if (!user) res.status(404).send({'status':"failed",'message':"User not found",'data': ""});
userRole = 'Admin'
userData = await EstablishmentUser.findOne({ where: { email } });
if (!userData) {
userData = await User.findOne({ where: { email } });
userRole = 'EstablishmentUser'
if (!userData) res.status(404).send({'status':"failed",'message':"User not found",'data': ""});
}
const validPass = await bcrypt.compare(password, user.password);
const validPass = await bcrypt.compare(password, userData.password);
if (!validPass) res.status(401).send({'status':"failed",'message':"Invalid password",'data': ""});
const token = jwt.sign({ id: user.id, email: user.email }, process.env.JWT_SECRET, {
if(userRole == 'Admin')
{
tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole }
}else{
tokenData = { id: userData.id, email: userData.email , name: userData.name , role : userRole , establishment_id: userData.establishment_id }
}
const token = jwt.sign(tokenData, process.env.JWT_SECRET, {
expiresIn: "6h",
});

View File

@ -1,7 +1,7 @@
const db = require("../models");
const bcrypt = require("bcryptjs");
const Establishment = db.establishment;
const EstablishmentUser = db.establishment_user;
const EstablishmentUser = db.EstablishmentUser;
// Create Establishment + linked user
exports.createEstablishment = async (req, res) => {
@ -39,10 +39,10 @@ exports.createEstablishment = async (req, res) => {
// });
res.status(201).send({'status':"success",'message':"Establishment and linked user created successfully",'data': { establishment } });
return res.status(201).send({'status':"success",'message':"Establishment and linked user created successfully",'data': { establishment } });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -61,10 +61,10 @@ exports.getAllEstablishments = async (req, res) => {
],
});
res.status(200).send({'status':"success",'message':"Fetched successfully",'data': data });
return res.status(200).send({'status':"success",'message':"Fetched successfully",'data': data });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -76,12 +76,12 @@ exports.getEstablishmentById = async (req, res) => {
include: [{ model: EstablishmentUser, as: "users" }],
});
if (!data) res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" });
if (!data) return res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" });
res.status(200).send({'status':"success",'message':"Fetched successfully",'data': data });
return res.status(200).send({'status':"success",'message':"Fetched successfully",'data': data });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -93,12 +93,12 @@ exports.updateEstablishment = async (req, res) => {
where: { id: req.params.id },
});
if (!updated) res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" });
if (!updated){ return res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" }); }
res.status(200).send({'status':"success",'message':"Updated successfully",'data': "" });
return res.status(200).send({'status':"success",'message':"Updated successfully",'data': "" });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -108,11 +108,11 @@ exports.deleteEstablishment = async (req, res) => {
const deleted = await Establishment.destroy({ where: { id: req.params.id } });
if (!deleted) res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" });
if (!deleted) return res.status(404).send({'status':"failed",'message':"Record Not found",'data': "" });
res.status(200).send({'status':"success",'message':"Deleted successfully",'data': "" });
return res.status(200).send({'status':"success",'message':"Deleted successfully",'data': "" });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};

View File

@ -1,6 +1,6 @@
const db = require("../models");
const bcrypt = require("bcryptjs");
const EstablishmentUser = db.establishment_user;
const EstablishmentUser = db.EstablishmentUser;
// Create User
exports.createUser = async (req, res) => {
@ -17,10 +17,10 @@ exports.createUser = async (req, res) => {
gender,
});
res.status(201).send({'status':"success",'message':"Creation successful",'data': user });
return res.status(201).send({'status':"success",'message':"Creation successful",'data': user });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -29,10 +29,10 @@ exports.getAllUsers = async (req, res) => {
try {
const users = await EstablishmentUser.findAll({ where:{ establishment_id : req.query.establishment_id} });
res.status(200).send({'status':"success",'message':"Fetched successfully",'data': users });
return res.status(200).send({'status':"success",'message':"Fetched successfully",'data': users });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -44,10 +44,10 @@ exports.getUserById = async (req, res) => {
if (!user) res.status(404).send({'status':"failed",'message':"Record not found",'data': "" });
res.status(200).send({'status':"success",'message':"Fetched successfully",'data': user });
return res.status(200).send({'status':"success",'message':"Fetched successfully",'data': user });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -66,12 +66,12 @@ exports.updateUser = async (req, res) => {
where: { id: req.params.id },
});
if (!updated) res.status(404).send({'status':"failed",'message':"Record not found",'data': "" });
if (!updated) return res.status(404).send({'status':"failed",'message':"Record not found",'data': "" });
res.status(200).send({'status':"success",'message':"Record updated successfully",'data': "" });
return res.status(200).send({'status':"success",'message':"Record updated successfully",'data': "" });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};
@ -81,11 +81,11 @@ exports.deleteUser = async (req, res) => {
const deleted = await EstablishmentUser.destroy({ where: { id: req.params.id } });
if (!deleted) res.status(404).send({'status':"failed",'message':"Record not found",'data': "" });
if (!deleted) return res.status(404).send({'status':"failed",'message':"Record not found",'data': "" });
res.status(200).send({'status':"success",'message':"Record deleted successfully",'data': "" });
return res.status(200).send({'status':"success",'message':"Record deleted successfully",'data': "" });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
return res.status(500).send({'status':"failed",'message':err.message });
}
};

View File

@ -21,14 +21,12 @@ const dashboardController = require("../controllers/dashboard.controller");
/**
* @swagger
* tags:
* - name: Admin Auth
* - name: Admin And Establishments User Auth
* description: Authentication
* - name: Admin Users
* description: User management APIs
* - name: Establishments
* description: CRUD APIs for managing Establishments
* - name: Establishments User Auth
* description: Establishments User Auth APIs
* - name: Establishment Users
* description: CRUD APIs for managing Establishment Users
* - name: Products
@ -80,7 +78,7 @@ const dashboardController = require("../controllers/dashboard.controller");
* /api/auth/admin_register:
* post:
* summary: Register new Admin-user (For testing purpose only)
* tags: [Admin Auth]
* tags: [Admin And Establishments User Auth]
* security:
* - appSignature: []
* requestBody:
@ -118,8 +116,8 @@ router.post("/auth/admin_register",[verifySignature], authController.register);
* @swagger
* /api/auth/admin_login:
* post:
* summary: Login Admin-user and get JWT token
* tags: [Admin Auth]
* summary: Login Admin-user / Establishments-user and get JWT token
* tags: [Admin And Establishments User Auth]
* security:
* - appSignature: []
* requestBody:
@ -689,58 +687,43 @@ router.delete("/establishment-users/:id",[verifySignature, verifyToken], establi
/**
* @swagger
* /api/auth/user_login:
* post:
* summary: Login as establishment user
* tags: [Establishments User Auth]
* security:
* - appSignature: []
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* required:
* - email
* - password
* properties:
* email:
* type: string
* example: gem@alpha.com
* password:
* type: string
* example: StrongPass@123
* responses:
* 200:
* description: Login successful
* 400:
* description: Missing fields
* 401:
* description: Invalid credentials
* 404:
* description: User not found
* 500:
* description: Server error
*/
router.post("/auth/user_login",[verifySignature], establishmentUserAuthController.login);
// /**
// * @swagger
// * /api/auth/user_logout:
// * /api/auth/user_login:
// * post:
// * summary: Logout user (client should discard JWT token)
// * summary: Login as establishment user
// * tags: [Establishments User Auth]
// * security:
// * - appSignature: []
// * - bearerAuth: []
// * requestBody:
// * required: true
// * content:
// * application/json:
// * schema:
// * type: object
// * required:
// * - email
// * - password
// * properties:
// * email:
// * type: string
// * example: gem@alpha.com
// * password:
// * type: string
// * example: StrongPass@123
// * responses:
// * 200:
// * description: Logout successful
// * description: Login successful
// * 400:
// * description: Missing fields
// * 401:
// * description: Invalid credentials
// * 404:
// * description: User not found
// * 500:
// * description: Server error
// */
// router.post("/auth/user_logout",[verifySignature, verifyToken], establishmentUserAuthController.logout);
// router.post("/auth/user_login",[verifySignature], establishmentUserAuthController.login);