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