testing
This commit is contained in:
parent
fbda6dfd8b
commit
046ce59952
@ -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,
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user