Session is not beeing created with Passport.js

Viewed 48

I created some code to work with Google OAuth2 with Passport.js, but my code doesn't seem to create a session after the user had successfully authenticated .

Everything else works, just not the sessions.

My auth code:

const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20").Strategy;
const User = require("../database/models/User");

passport.serializeUser((user, done) => {
  done(null, user.userID);
});

passport.deserializeUser(async (userID, done) => {
  try {
    const user = await User.findOne({ userID: userID });
    return done(null, user);
  } catch (err) {
    console.log(err);
    done(err, null);
  }
});

passport.use(
  new GoogleStrategy(
    {
      clientID:
        "my client id",
      clientSecret: "my client secret",
      callbackURL: "/api/v1/auth/google/redirect",
      scope: ["profile"],
    },
    async (accessToken, refreshToken, profile, done) => {
      const { _json } = profile;
      try {
        const findUser = await User.findOneAndUpdate(
          { userID: _json.sub },
          {
            email: _json.email,
            avatar: _json.picture,
            username: _json.name,
          },
          { new: true }
        );
        if (findUser) {
          console.log("user has been found!");
          return done(null, findUser);
        } else {
          const newUser = await User.create({
            userID: _json.sub,
            avatar: _json.picture,
            username: _json.name,
            email: _json.email,
          });
          return done(null, newUser);
        }
      } catch (err) {
        console.log(err);
        done(err, null);
      }
    }
  )
);

and my passport and session setup:

app.use(
  session({
    secret: "secret",
    cookie: { maxAge: 3600 * 60 * 24, domain: "lvh.me:3001" },
    resave: false,
    saveUninitialized: false,
    store: new Store({ mongooseConnection: mongoose.connection }),
  })
);

app.use(passport.initialize());
app.use(passport.session());

0 Answers
Related