84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
const bcrypt = require("bcrypt");
|
|
const Account = require("../models/AccountModel");
|
|
const jwt = require("jsonwebtoken")
|
|
exports.addAccount = async function (req, res) {
|
|
let { username, password, role, full_name } = req.body;
|
|
const salt = await bcrypt.genSalt(10);
|
|
const hashed = await bcrypt.hash(password, salt);
|
|
|
|
try {
|
|
const { pCode, pMess } = await Account.addAccount(
|
|
username,
|
|
hashed,
|
|
role,
|
|
full_name
|
|
);
|
|
if (pCode === 1) {
|
|
res.json({ pCode: pCode, pMess: pMess });
|
|
}
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
exports.checkLogin = async function (req, res) {
|
|
let { username, password } = req.body;
|
|
|
|
try {
|
|
const { pData, pCode, pMess } = await Account.getAccountByUsername(
|
|
username
|
|
);
|
|
if (pData[0] === undefined) {
|
|
res.json({ pCode: 2, pMess: "username invalid" });
|
|
} else {
|
|
const validPassword = await bcrypt.compare(
|
|
password,
|
|
pData[0].acc_password
|
|
);
|
|
if (validPassword) {
|
|
const accessToken = jwt.sign(
|
|
{
|
|
username: pData[0].acc_name,
|
|
role: pData[0].acc_role,
|
|
full_name: pData[0].acc_fullname
|
|
},
|
|
"process.env.JWT_ACCESS_KEY",
|
|
{ expiresIn: "365d" }
|
|
);
|
|
res.json({
|
|
pCode: 1,
|
|
pMess: "login success",
|
|
accessToken: accessToken
|
|
});
|
|
} else {
|
|
res.json({ pCode: 0, pMess: "password is not correct" });
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
};
|
|
|
|
exports.checkToken = async function (req, res) {
|
|
let { accessToken } = req.body;
|
|
console.log(req.body)
|
|
try {
|
|
jwt.verify(accessToken, "process.env.JWT_ACCESS_KEY", (err, user) => {
|
|
if (err) {
|
|
res.json({
|
|
pCode: 0,
|
|
pMess: "Token bad"
|
|
});
|
|
console.log("bad")
|
|
} else {
|
|
res.json({
|
|
pCode: 1,
|
|
pMess: "Token good"
|
|
});
|
|
console.log("good")
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
}; |