Oh and my code is ``` import { Request, Response, ...
# support-questions-legacy
h
Oh and my code is
Copy code
import { Request, Response, NextFunction } from "express";
import JsonWebToken, { JwtHeader, SigningKeyCallback } from "jsonwebtoken";
import jwksClient from "jwks-rsa";

export const verifySession = () => {
  var client = jwksClient({
    jwksUri: process.env.JWKS_URI as string,
    requestHeaders: {
      'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
    }
  });
  function getKey(header: JwtHeader, callback: SigningKeyCallback) {
    client.getSigningKey(header.kid, function (err, key) {
      var signingKey = key?.getPublicKey();
      console.log(process.env.JWKS_URI)
      callback(err, signingKey);
    });
  }

  return async (req: Request, res: Response, next: NextFunction) => {
    if (!req.headers.authorization) {
      return res
        .status(401)
        .send({ success: false, message: "Authorization header is required" });
    }

    const token = req.headers.authorization.split(" ")[1];

    JsonWebToken.verify(token, getKey, {}, function (err, decoded) {
      if (err) {
        console.log(err);
        return res
          .status(401)
          .send({ success: false, message: "Invalid token" });
      } else {
        const userID: string = decoded?.sub as string;

        req.user = userID; // set the decoded token to the request object
        next();
      }
    });
  };
};
2 Views