2024-09-23 23:40:02 +05:30
|
|
|
import { Request, Response } from "express";
|
2024-10-24 22:26:12 +05:30
|
|
|
import { verify, JwtPayload } from "jsonwebtoken";
|
2024-09-23 23:40:02 +05:30
|
|
|
|
2024-10-24 22:26:12 +05:30
|
|
|
interface UserRequest extends Request {
|
|
|
|
|
user?: JwtPayload | string;
|
2024-09-23 23:40:02 +05:30
|
|
|
}
|
|
|
|
|
|
2024-10-24 22:26:12 +05:30
|
|
|
export const requireSignIn = (req: UserRequest, res: Response, next: any) => {
|
2024-09-23 23:40:02 +05:30
|
|
|
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) => {
|
|
|
|
|
console.log(err)
|
|
|
|
|
|
|
|
|
|
if (err) return res.sendStatus(403)
|
|
|
|
|
|
|
|
|
|
req.user = user;
|
|
|
|
|
|
|
|
|
|
next()
|
|
|
|
|
})
|
|
|
|
|
};
|