worldshine-redesign/app/controllers/auth.controller.js
2025-04-14 16:29:36 -04:00

60 lines
1.8 KiB
JavaScript

const db = require("../models");
const Employee = db.employee;
const config = require("../config/auth.config");
var jwt = require("jsonwebtoken");
var bcrypt = require("bcryptjs");
const { splitSite } = require("../middlewares");
// Create and Save a new User
exports.login = (req, res) => {
var condition = {};
const emailUsername = req.body.emailUsername;
console.log('emailUsername', emailUsername);
if (emailUsername) {
condition = { $or: [
{ email: emailUsername },
{ username: emailUsername }
]};
condition = splitSite.splitSiteGet(req, condition);
Employee.find(condition)
.then(data => {
if (data && data.length > 0) {
if (data.length === 1 && bcrypt.compareSync(
req.body.password,
data[0].password
) && data[0]?.status === 'active') {
var token = jwt.sign({id: data[0].id}, config.secret, {
expiresIn: 86400 // 24 hours
});
res.send({
accessToken: token,
username: data[0].username,
email: data[0].email,
roles: data[0].roles,
id: data[0].id,
name: data[0].name,
name_cn: data[0].name_cn
} );
} else {
if (data[0].status !== 'active') {
throw(Error('User is not activated'));
} else {
throw(Error('Email or Password Is Invalid'));
}
}
} else {
throw(Error('Email or Password Is Invalid'));
}
})
.catch(err => {
res.status(500).send({
message:
err.message || "Email Or Password Invalid"
});
});
} else {
throw(Error('email or username is required'));
}
}