I am creating login using a passport.js. But getting an error 'passport.initialize() middleware not in use. Tried all the existing stack overflow similar question but I am still getting the error, Can anyone suggest a fix?
Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/srv/node_modules/passport/lib/http/request.js:46:34) at Strategy.strategy.success (/srv/node_modules/passport/lib/middleware/authenticate.js:248:13) at verified (/srv/node_modules/passport-oauth2/lib/strategy.js:186:20) at datastore.runQuery.then.results (/srv/config/passport-setup.js:48:16)
passport-setup.js
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('./keys');
const gstore = require('gstore-node')();
const Datastore = require('@google-cloud/datastore');
const projectId = 'stately';
const datastore = new Datastore({
projectId: projectId,
});
gstore.connect(datastore);
passport.serializeUser((user, done)=> {
done(null, user);
})
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use(
new GoogleStrategy({
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret,
callbackURL: '/auth/google/callback',
userProfileURL:keys.google.userProfileURL
},(accessToken, refreshToken, profile, done) => {
console.log(profile);
var email =profile.emails[0].value;
var user =profile.id;
const newUser = {
username :profile.displayName,
googleId : profile.id,
email:email
}
const query = datastore.createQuery('Profile').filter('email', '=', email);
datastore.runQuery(query).then(results => {
const tasks = results[0];
const newData = JSON.stringify(tasks);
const parsed = JSON.parse(newData);
const data = parsed;
const gUser = data[0].email;
if (gUser == email) {
//gUser = profile.id;
console.log("My Email",user,profile.id)
return done (null, user);
}
else {
return done (null, false);
}
/*
if (gUser == email) {
return done (null, user);
} else {
datastore.save({
key: datastore.key(['Profile', username]),
data: newUser,
}).then(() => {
// res.send("Iteam Saved to Database");
return done (null, false);
res.redirect('/login');
*/
}).catch((err) => {
console.log(err)
})
})
)
pp.js
var express = require('express');
var server = express();
const https = require('https');
const ejs = require('ejs');
const gstore = require('gstore-node')();
const Datastore = require('@google-cloud/datastore');
const mimeTypes = require('mimetypes');
const fs = require('fs');
const projectId = 'statelyXXXXX';
var path = require("path");
const bodyParser = require("body-parser");
const passport = require('passport');
const cookieSession = require('cookie-session');
server.set('views', path.join(__dirname, 'views'));
server.set('view engine', 'ejs');
server.engine('html', require('ejs').renderFile);
//Set path for static assets
server.use(express.static(path.join(__dirname, 'public')));
server.use(bodyParser.json({
limit: '50mb'
}));
server.use(bodyParser.urlencoded({
limit: '50mb',
extended: true
}));
const SendOtp = require('sendotp');
const sendOtp = new SendOtp('233', 'Your verification code is {{otp}}');
var moment = require('moment');
const swal = require('sweetalert2');
var nodemailer = require('nodemailer');
var SMTP = require('nodemailer-smtp-transport');
const vision = require('@google-cloud/vision');
//Database
const datastore = new Datastore({
projectId: projectId,
});
gstore.connect(datastore);
//View engine setup
const keys = require('./config/keys');
const passportSetup = require('./config/passport-setup');
const authRoutes = require('./routes/auth-routes');
var templates = require('./routes/templates');
//set Routes
server.use('/', templates);
server.use('/auth', authRoutes);
server.use(cookieSession({
maxAge:24*60*60*1000,
keys:[keys.session.cookieKey]
}))
//initialize passport
server.use(passport.initialize());
server.use(passport.session());