express-blog-api/controllers/login.js
2023-09-18 13:43:22 -07:00

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