32 lines
687 B
JavaScript
32 lines
687 B
JavaScript
var { User } = require("../models/models");
|
|
var { compareSync } = require("bcryptjs");
|
|
var { sign } = require("jsonwebtoken");
|
|
|
|
async function createToken(req, res, next) {
|
|
try {
|
|
let user = await User.findOne({ where: { username: req.fields.username } });
|
|
|
|
if (!user) return res.status(401).end();
|
|
|
|
if (!compareSync(req.fields.password, user.password))
|
|
return res.status(401).end();
|
|
|
|
let token = sign({
|
|
data: user
|
|
}, process.env.JWT_SECRET, { expiresIn: "1h" });
|
|
|
|
res.json({
|
|
userId: user.id,
|
|
token,
|
|
validUntil: Date.now() + (60*60*1000)
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
res.status(500).end();
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
createToken
|
|
};
|