Files

33 lines
917 B
TypeScript
Executable File

import config from "config";
import jwt from "jsonwebtoken";
import type { Request, Response, NextFunction } from "express";
interface ResponseAndUser extends Request {
user?: string;
}
function auth(req: ResponseAndUser, res: Response, next: NextFunction) {
// Get token from header
const token = req.header("x-auth-token");
// Check if not token
if (!token) {
return res.status(401).json({ msg: "No token, authorization denied" });
}
// Verify token
try {
jwt.verify(token, config.get("jwtSecret"), (error, decoded) => {
if (error) {
return res.status(401).json({ msg: "Token is not valid" });
} else {
if (decoded && typeof decoded !== "string") req.user = decoded?.user;
next();
}
});
} catch (err) {
console.error("something wrong with auth middleware");
res.status(500).json({ msg: "Server Error" });
}
}
export default auth;