24 lines
930 B
JavaScript
24 lines
930 B
JavaScript
const asyncHandler = require("express-async-handler");
|
|
const jwt = require("jsonwebtoken");
|
|
const bcrypt = require("bcryptjs");
|
|
const User = require("../models/user.js");
|
|
|
|
let opts = {};
|
|
|
|
exports.post = asyncHandler(async (req, res, next) => {
|
|
const admin = await User.findOne({}).lean().exec(); // only one user in DB - admin. pull it up, jamie!
|
|
const { username, password } = req.body; // get fields from body
|
|
if (username === admin.username) {
|
|
console.log();
|
|
const match = await bcrypt.compare(password, admin.password); // compare bcrypt hashed passwords
|
|
if (match) {
|
|
opts.expiresIn = 120;
|
|
const token = jwt.sign({ username }, process.env.SECRET_KEY, opts); // create token and return below
|
|
return res.status(200).json({
|
|
message: "Authentication complete",
|
|
token,
|
|
});
|
|
}
|
|
}
|
|
return res.status(401).json({ message: "Authentication failed" }); // get rekt nerd
|
|
});
|