33 lines
917 B
TypeScript
Executable File
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;
|