From 13bf1d14499e9cbb9d99c8bbc350e3cb5a7a4fd2 Mon Sep 17 00:00:00 2001 From: Vidhu Kant Sharma Date: Sun, 13 Apr 2025 18:26:41 +0530 Subject: first commit --- src/middleware/auth.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/middleware/auth.ts (limited to 'src/middleware') diff --git a/src/middleware/auth.ts b/src/middleware/auth.ts new file mode 100644 index 0000000..ee10218 --- /dev/null +++ b/src/middleware/auth.ts @@ -0,0 +1,34 @@ +import { Request, Response, NextFunction } from "express"; +import jwt from "jsonwebtoken"; + +const authenticate = () => (req: Request, res: Response, next: NextFunction) => { + const authHeader = req.headers.authorization; + const token = authHeader && authHeader.split(" ")[1]; + + if (!token) res.status(401).json({ error: "Unauthorized" }); + + // @ts-ignore + jwt.verify(token as string, process.env.ACCESS_TOKEN_SECRET, (err, claims) => { + if (err) { + // @ts-ignore + switch (err.message) { + case "jwt expired": + res.status(401).json({ error: "Token Expired" }); + break; + case "invalid signature": + res.status(401).json({ error: "Invalid Credentials" }); + break; + default: + res.status(500).json({ error: "Internal Server Error" }); + console.error(err) + break; + } + } else { + // @ts-ignore + req.userId = claims.userId; + next(); + } + }); +} + +export default authenticate; \ No newline at end of file -- cgit v1.2.3