Files
parcer/server/src/middlewares/auth.ts
2024-11-19 16:54:18 +05:30

32 lines
961 B
TypeScript

import { Request, Response } from "express";
import { verify, JwtPayload } from "jsonwebtoken";
interface UserRequest extends Request {
user?: JwtPayload | string;
}
export const requireSignIn = (req: UserRequest, res: Response, next: any) => {
const token = req.cookies && req.cookies.token ? req.cookies.token : null;
if (token === null) return res.sendStatus(401);
const secret = process.env.JWT_SECRET;
if (!secret) {
return res.sendStatus(500); // Internal Server Error if secret is not defined
}
verify(token, secret, (err: any, user: any) => {
if (err) {
console.log('JWT verification error:', err);
return res.sendStatus(403);
}
// Normalize payload key
if (user.userId && !user.id) {
user.id = user.userId;
delete user.userId; // temporary: del the old key for clarity
}
req.user = user;
next();
});
};