fcsc_ipi_backend/app/controllers/establishment_users_auth.controller.js
2025-10-21 15:31:57 +05:30

43 lines
1.6 KiB
JavaScript

const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const db = require("../models");
const EstablishmentUser = db.EstablishmentUser;
// User Login
exports.login = async (req, res) => {
try {
const { email, password } = req.body;
if (!email || !password)
return res.status(400).send({'status':"failed",'message':"Email and password required",'data': ""});
const user = await EstablishmentUser.findOne({ where: { email } });
if (!user) res.status(404).send({'status':"failed",'message':"User not found",'data': ""});
const validPassword = await bcrypt.compare(password, user.password);
if (!validPassword)
return res.status(401).json({ message: "Invalid password" });
// Create JWT token
const token = jwt.sign({ id: user.id, email: user.email , name: user.name, establishment_id: user.establishment_id }, 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 });
}
};
// User Logout (JWT-based — just a client-side operation)
exports.logout = async (req, res) => {
try {
// For JWT, logout is handled on the client (by deleting token)
// But you can still log or blacklist token if needed
res.status(200).send({'status':"success",'message':"Logout successful",'data': "" });
res.status(200).json({ message: "Logout successful (client should discard token)" });
} catch (err) {
res.status(500).send({'status':"failed",'message':err.message });
}
};