Using CompoundJs with Passport Using CompoundJs with Passport mongoose mongoose

Using CompoundJs with Passport


Here is how I managed to make my local. Hope you can solve your implementation also this way.

It will create a full new strategy that you will be able to use together

var express = require('express');var passport = require('passport');var config = require('../config/environment');var User = require('../api/user/user.model');// Passport Configurationrequire('./login/passport').setup(User, config);//HERE WE  WILL ADD OUR LOCAL STRATEGYvar router = express.Router();router.use('/local', require('./local/index'));

local/index.js

var passport = require('passport');var auth = require('../auth.service.js');var router = express.Router();router.post('/', function(req, res, next) {  console.log.req;  passport.authenticate('local', function (err, user, info) {    var error = err || info;    if (error) return res.json(401, "THAT´S BAD");    if (!user) return res.json(404, {message: 'Something went wrong, please try again.'});    var token = auth.signToken(user._id, user.role);    res.json({token: token, user:user});  })(req, res, next)});module.exports = router;

local/passport.js

var passport = require('passport');var Local = require('passport-local').Strategy;exports.setup = function (User, config) {  passport.use("local", new Local({      usernameField: 'apikey',      passwordField: 'apisecret'    },    function(apikey, apisecret, done) {//THIS FUNCTION IS THE ONE YOU HAVE TO IMPLEMENT TO YOUR LOCAL WAY      User.findOne({        apikey: apikey,        apisecret: apisecret      }, function(err, user) {        if (!user) {          return done("YOUR API KEY HAS NOT AUTHORIZATION", false, { message: 'This email is not registered.' });        }        return done(null, user);      });    }  ));  passport.serializeUser(function(user, done) {    done("USER", user);  });  passport.deserializeUser(function(user, done) {    done(null, user);  });};