I'm trying to use passport to register a user to a databse in an express app. I have an if (err) statement that seemingly always returns true. When I submit my registration form, I want to check for any errors, and display them if there are any; if there are no errors, I would like to add the user to my MongoDB database. My app.js file looks like this:
var express = require('express'),
mongoose = require('mongoose'),
Schema = mongoose.Schema,
app = express(),
bodyParser = require('body-parser'),
session = require('express-session'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy;
var Connection = mongoose.createConnection('mongodb://localhost:27017/customerapp', function (err) {
mongoose.Promise = global.Promise;
if (err) {
return console.log(err)
}
//Mongoose Schema
var userSchema = new Schema({
username: String,
email: String,
password: String
});
var User = mongoose.model('User', userSchema);
});
//View Engine
app.set('view engine', 'ejs');
//Middleware
app.use(bodyParser.urlencoded({ extended: true }));
app.use(session({
secret: 'dskjfhewfsdfsdfe',
resave: true,
saveUninitialized: true
}));
//Passport Middleware
app.use(passport.initialize());
app.use(passport.session());
//Serialise user
passport.serializeUser(function (user, done) {
return done(null, user._id);
});
//Deserialise user
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
//Register Strategy
passport.use('registerUser', new LocalStrategy(
{ passReqToCallback: true },
function (req, username, password, done) {
var newUser = new User({
username: username,
password: password,
email: req.body.email
});
newUser.save(function (err) {
if (err) {
return done(err);
}
return done(null, newUser);
});
}
));
//Define routes
app.route('/register').get(function (req, res) {
res.render('register');
})
.post(function (req, res, next) {
passport.authenticate('registerUser', function(err, user, info) {
if (err) {
return res.json({ err: err, info: info});
}
res.send(user);
})(req, res, next);
});
every time i try to submit my registration form, i get the following page:
{"err":{}}
(as in, that is all the source code for the page). Does anyone know what I'm doing wrong? Thanks in advance!
Aucun commentaire:
Enregistrer un commentaire