passport
unknown
plain_text
8 months ago
1.3 kB
3
Indexable
const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20").Strategy;
const User = require("../models/User");
const Role = require("../models/Role");
require("dotenv").config();
passport.use(
new GoogleStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: process.env.GOOGLE_CALLBACK_URL,
},
async (accessToken, refreshToken, profile, done) => {
try {
const email = profile.emails[0].value;
console.log(profile)
const userRole = await Role.findOne({ name: "user" });
let user = await User.findOne({ email });
if (!user) {
user = new User({
email,
fullname: profile.displayName,
roleId: userRole._id,
password: "123456"
});
await user.save();
}
return done(null, user);
} catch (error) {
return done(error, null);
}
}
)
);
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
try {
const user = await User.findById(id);
done(null, user);
} catch (error) {
done(error, null);
}
});
Editor is loading...
Leave a Comment