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); });};