passport-local.js
<pre>'use strict';
const passport = require('passport');
const User = require('../models/user');
const LocalStrategy = require('passport-local').Strategy;
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user);
});
});
passport.use(
'local.signup',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passreqTocallback: true,
},
(req, email, password, done) => {
User.findOne({ email: email }, (err, user) => {
if (err) {
return done(err);
}
if (user) {
return done(
null,
false,
req.flash('error', 'User with the email already exists')
);
}
const newUser = new User();
newUser.username = req.body.username;
newUser.fullname = req.body.username;
newUser.email = req.body.email;
newUser.password = newUser.encryptPassword(req.body.password);
newUser.save((err) => {
done(null, newUser);
});
});
}
)
);
When I run
nodemon server
and enter the user registration details and click submit, I get the following error on submiting the user registration form as shown below -
node:events:371
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'username' of undefined
at /home/prithvi/Desktop/Ideal-table-talk/passport/passport-local.js:39:37
at /home/prithvi/Desktop/Ideal-table-talk/node_modules/mongoose/lib/model.js:5065:18
at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
at /home/prithvi/Desktop/Ideal-table-talk/node_modules/mongoose/lib/model.js:5067:15
at processTicksAndRejections (node:internal/process/task_queues:78:11)
What I have tried:
I've tried sending the username as parameter to arrow function in localstrategy constructor but, still I get the same error.