Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const passport = require("passport");
- const LocalStrategy = require("passport-local");
- const FacebookStrategy = require('passport-facebook').Strategy;
- const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
- const dotenv = require("dotenv");
- const bcrypt = require('bcryptjs');
- const Users = require('../db/models/users');
- dotenv.config();
- passport.serializeUser((user, done) => {
- done(null, user.id);
- });
- passport.deserializeUser(async (id, done) => {
- const user = await Users.findById(id);
- if(user) {
- done(null, user);
- } else {
- done(error, null);
- }
- });
- passport.use(
- 'local-Login',
- new LocalStrategy(
- {
- usernameField: 'username',
- passwordField: 'password',
- passReqToCallback: true,
- },
- async (req, login, password, done) => {
- let user = await Users.findOne({ where: {
- $or: [
- {email: login},
- {username: login}
- ]}
- });
- if (user !== null) {
- bcrypt.compare(
- password,
- `$2a${user.password.substring(3)}`,
- (error, result) => {
- if (!result) {
- return done(null, false, {
- error: true,
- info: 'Oops! Wrong password.',
- });
- }
- if (error) return done(error);
- return done(null, user);
- },
- );
- } else {
- return done(null, false, {
- error: true,
- info: 'User not found',
- });
- }
- },
- ),
- );
- passport.use(
- 'local-signup',
- new LocalStrategy(
- {
- usernameField: 'username',
- passwordField: 'password',
- passReqToCallback: true,
- },
- async (req, username, password, done) => {
- const {email, name} = req.body;
- let user = await Users.findOne({ where: {
- $or: [
- {email},
- {username}
- ]}
- });
- if (user) {
- return done(null, false, {
- error: true,
- info: user.username == username ? 'Username already taken' : 'Email already taken',
- });
- } else {
- user = await Users.create({
- username,
- email,
- name,
- password: bcrypt.hashSync(password, 10),
- });
- return done(null, user);
- }
- },
- ),
- );
- passport.use(
- 'google',
- new GoogleStrategy(
- {
- clientID: process.env.GOOGLE_ID,
- clientSecret: process.env.GOOGLE_SECRET,
- callbackURL: '/auth/google/callback',
- proxy: true
- },
- async (token, tokenSecret, profile, done) => {
- let user = await Users.findOne({ where: { googleID: profile.id }});
- if (user) {
- return done(null, user)
- } else {
- user = await Users.create({
- name: profile.displayName,
- email: profile.emails[0].value,
- googleID: profile.id,
- });
- return done(null, user);
- }
- },
- ),
- );
- passport.use(
- 'facebook',
- new FacebookStrategy (
- {
- clientID: process.env.FB_ID,
- clientSecret: process.env.FB_SECRET,
- callbackURL: process.env.FB_CALLBACK_URL,
- proxy: true
- },
- async (token, tokenSecret, profile, done) => {
- let user = await Users.findOne({ where: { facebookID: profile.id }});
- if (user) {
- return done(null, user)
- } else {
- user = await Users.create({
- name: profile.displayName,
- facebookID: profile.id,
- created: Date.now(),
- });
- return done(null, user);
- }
- },
- ),
- );
- module.exports = passport;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement