Here's how I managed to make my local one. Hope you can also solve your implementation.
He will create a complete new strategy that you can use together.
var express = require('express'); var passport = require('passport'); var config = require('../config/environment'); var User = require('../api/user/user.model'); // Passport Configuration require('./login/passport').setup(User, config); //HERE WE WILL ADD OUR LOCAL STRATEGY var 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); }); };