Пытаюсь с помощью Express написать банальную систему регистрации/авторизации через Passport, но упёрся в ошибку и не понимаю куда двигаться дальше. При попытке отправить данные из формы в базу Mongo получаю в messages ошибку "Missing credentials" -
joxi.ru/8Anok4bfjEG4Gr
Что именно ему не нравится не пойму. Какие есть способы вывести более детальный лог ошибок?
app.jsapp.get('/register', function(req, res, next) {
var messages = req.flash('error');
res.render('register.hbs', {
title: 'Регистрация',
messages: messages,
hasErrors: messages.length > 0
});
});
app.post('/register', passport.authenticate('local.signup', {
successRedirect: 'start',
failureRedirect: 'register',
failureFlash: true
}));
passport.jsvar passport = require('passport');
var User = require('../models/user');
var LocalStrategy = require('passport-local').Strategy;
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use('local.signup', new LocalStrategy({
usernameField: 'username',
password: 'password',
passRecToCallback: true
}, function(req, username, password, done) {
User.findOne({username: 'username'}, function(err, user) {
if(err) {
return done(err);
}
if(user) {
return done(null, false, {message: 'Такой username занят'});
}
var newUser = new User();
newUser.username = username;
newUser.password = newUser.encryptPassword(password);
newUser.save(function(err, result) {
if(err) {
return done(err);
}
return done(null, newUser);
});
});
}
)
);
passport.use('local.signup', new LocalStrategy({
usernameField: 'username',
passwordField: 'password',
passReqToCallback: true
}, function (req, username, password, done) {
req.checkBody('username', 'Invalid username').notEmpty();
req.checkBody('password', 'Invalid password').notEmpty().isLength({min:4});
var errors = req.validationErrors();
if (errors) {
var messages = [];
errors.forEach(function(error) {
messages.push(error.msg);
});
return done(null, false, req.flash('error', messages));
}
User.findOne({'username': username}, function (err, user) {
if (err) {
return done(err);
}
if (user) {
return done(null, false, {message: 'username is already in use.'});
}
var newUser = new User();
newUser.username = username;
newUser.password = newUser.encryptPassword(password);
newUser.save(function(err, result) {
if (err) {
return done(err);
}
return done(null, newUser);
});
});
}));