CiscoTool_v1/netmiko_Api/controllers/AccountController.js

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);
}
};