create-nodeapi-backend
Version:
A powerful Node.js backend boilerplate with Express, MongoDB, Firebase, JWT auth, Nodemailer, cron jobs, input validation (Joi), and serverless support for Vercel. Scaffold a full-featured API backend in seconds.
47 lines (38 loc) • 1.19 kB
JavaScript
const jwt = require("jsonwebtoken");
const config = require("../config/index");
const { User } = require("../model/index");
const isAccountVerified = async (req, res, next) => {
const token = req.headers.authorization?.split(" ")[1];
if (!token) {
return res
.status(httpStatus.UNAUTHORIZED)
.json({ message: "Token is missing" });
}
try {
const { id } = jwt.verify(token, config.jwt.secret);
const user = await User.findById(id).select("isVerified");
if (!user) {
return res
.status(httpStatus.NOT_FOUND)
.json({ message: "User not found" });
}
if (!user.isVerified) {
return res
.status(httpStatus.UNAUTHORIZED)
.json({ message: "Please verify your account" });
}
next();
} catch (error) {
const status =
error.name === "JsonWebTokenError"
? httpStatus.UNAUTHORIZED
: httpStatus.INTERNAL_SERVER_ERROR;
return res.status(status).json({
message:
status === httpStatus.UNAUTHORIZED
? "Invalid token"
: "Internal server error"
});
}
};
module.exports = isAccountVerified;