am using passport to handle the log in process in my app but, am not using a server side route which is a submitted from instead, am using an xhr post, but because of that i got an issue that i couldn't determine.
here is the code of my app.js:
module.exports = function(db){
var express = require('express');
var mongoose = require('mongoose'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy;
var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var app = express();
var config = require('./config/config')[env];
require('./config/express')(app);
require('./config/db');
var User = mongoose.model('User');
passport.use(new LocalStrategy(
function(username, password, done){
User.findOne({userName:userName}).exec(function(err, user){
if(user){
return done(null, user);
console.log('found the user');
}else{
return done(null, false);
console.log('user not found');
}
})// query of findOne
}
));
passport.serializeUser(function(user, done){
if(user){
done(null, user._id);
}
});
passport.deserializeUser(function(id, done){
User.findOne({_id:id}).exec(function(err, user){
if(user){
return done(null, user);
}else
return done (null, false);
})
})
require('./config/routes')(app);
return app;
}
which is i don't get any of the log messages in my console, made me think i never query the database.
and here is the code of my route that i require at the end of the app.js
app.post('/login', function(req, res, next){
var auth=passport.authenticate('local', function(err, user){
if(err){return next(err);}
if(!user){res.send({success: false})}
req.logIn(user, function(err){
if(err){return next(err); }
res.send({success: true, user:user});
})
})
auth(req, res, next);
})
i handle the client side log in using angular.js so here is the controller code :
angular.module('app').controller('mvLoginCtrl', function($scope, $http){
$scope.signin = function(username, password){
$http.post('/login', {username:username, password:password}).then(function(response){
if(response.data.success){
console.log('logged in');
}else{
console.log('failed to log in');
}
})
}
})
the only message i got in my browser console is the one i logged in my mvLoginCtrl controller "failed to log in" and i can't tell where my code fail and if it query the data base or not .but each attempted to log in with exist username i get the fail message any help or explanation is appreciated.
express.js located ./config/express.js
var express = require('express');
var http = require('http');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var passport = require('passport');
module.exports = function(app){
// view engine setup
app.set('views', path.join(__dirname, '../views'));
//app.set('views', config.rootPath + 'views');
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(express.session({secret: 'myapp mobile unicorns'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, '../public')));
//app.use(express.static(config.rootPath + 'public'));
/*
*Middleware to modifiy the header.
*/
app.use(function(req,res,next){
res.set ('myapp-Powered-By' , 'mycompany');
next();
});
}
the log of the response object returned from the post request in the mvLoginCtrl controller
Object {data: "<!DOCTYPE html><html><head><title></title>
<link re…/app/admin/mvPushCtrl.js"></script></body></html>",
status: 200, headers: function, config: Object, statusText: "OK"}config:
Objectdata: "<!DOCTYPE html><html><head><title></title>
<link rel="stylesheet" href="/stylesheets/style.css">
<link rel="stylesheet" href="/vendor/bootstrap/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/vendor/toastr/toastr.min.css">
</head><body ng-app="app"><h1>userName is not defined</h1><h2></h2><pre>ReferenceError: userName is not defined?
at Strategy._verify (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\app.js:21:36)?
at Strategy.authenticate (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\passport-local\lib\strategy.js:90:12)?
at attempt (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\passport\lib\middleware\authenticate.js:337:16)?
at authenticate (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\passport\lib\middleware\authenticate.js:338:7)?
at C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\config\routes.js:24:6?
at callbacks (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\express\lib\router\index.js:164:37)?
at param (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\express\lib\router\index.js:138:11)?
at pass (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\express\lib\router\index.js:145:5)?
at Router._dispatch (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\express\lib\router\index.js:173:5)?
at Object.router (C:\Users\M-Mouallem\Desktop\mySpace\sandBox\myapp\node_modules\express\lib\router\index.js:33:10)</pre><script type="text/javascript" src="/vendor/jquery/dist/jquery.min.js"></script><script type="text/javascript" src="/vendor/bootstrap/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/vendor/toastr/toastr.js"></script><script type="text/javascript" src="/vendor/angular/angular.min.js"></script>
<script type="text/javascript" src="/vendor/angular-resource/angular-resource.min.js"></script><script type="text/javascript" src="/vendor/angular-route/angular-route.min.js"></script>
<script type="text/javascript" src="/app/app.js"></script><script type="text/javascript" src="/app/main/mvMainCtrl.js"></script>
<script type="text/javascript" src="/app/account/mvLoginCtrl.js"></script><script type="text/javascript" src="/app/account/mvIdentity.js"></script>
<script type="text/javascript" src="/app/common/mvNotifier.js"></script><script type="text/javascript" src="/app/account/mvAuth.js"></script>
<script type="text/javascript" src="/app/admin/mvPushCtrl.js"></script></body></html>
"headers: function (c){a||(a=vc(b));return c?a[I(c)]||null:a}status: 200statusText: "OK"__proto__: Object mvLoginCtrl.js:22
failed to log in