Passport.js - I can't send JWT token to middleware

Viewed 91

I am trying to login with Passport Google OAuth. I must give a JWT to my middleware. The second parameter (auth) is my middleware. Without middleware, it returns {"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}

(It is from res.json({token}))

router.get(
  "/google/redirect",
  auth,
  passport.authenticate("google", { session: false }),
  (req, res) => {
    const payload = {
      user: {
        id: req.user.id,
      },
    };
    try {
      jwt.sign(
        payload,
        config.get("jwtSecret"),
        { expiresIn: 360000 },
        (err, token) => {
          if (err) throw err;
          res.json({ token });
        }
      );
    } catch (err) {
      console.error(err.message);
      res.status(500).send("Server Error");
    }
  }
);

With middleware, it returns {"msg":"No token, authorization denied"}. I can't send jsonwebtoken. I was able to send in the login system. To make a short note, I am using MERN (mongo, express, react, node)

const jwt = require("jsonwebtoken");
const config = require("config");

module.exports = async function(req, res, next) {
  const token = req.header("x-auth-token");

  if (!token) {
    return res.status(401).json({ msg: "No token, authorization denied" });
  }

  try {
    await jwt.verify(token, config.get("jwtSecret"), (error, decoded) => {
      if (error) {
        res.status(401).json({ msg: "Token is not valid" });
      } else {
        req.user = decoded.user;
        next();
      }
    });
  } catch (err) {
    console.error("something wrong with auth middleware");
    res.status(500).json({ msg: "Server Error" });
  }
};

My working login system was:

router.post(
  "/",
  async (req, res) => {
    const { email, password } = req.body;

    try {
      let user = await User.findOne({ email });

      const isMatch = await bcrypt.compare(password, user.password);

      const payload = {
        user: {
          id: user.id,
        },
      };

      jwt.sign(
        payload,
        config.get("jwtSecret"),
        { expiresIn: 360000 },
        (err, token) => {
          if (err) throw err;
          res.json({ token });
        }
      );
    } catch (err) {
      console.error(err.message);
      res.status(500).send("Sunucu hatası");
    }
  }
);
0 Answers
Related