I have one post like this
app.post('/auth', passport.initialize(), passport.authenticate('local', { session: false,scope: [] }), serialize, generateToken, respond);
this is working correctly.
Now I have made above post as a function and calling from different page
accesstokenController.auth = function(req, res) {
console.log('Here auth called');
passport.initialize(), passport.authenticate(
'local', {
session: false,
scope: []
}), serialize, generateToken, respond
};
and calling this method from differnt rout page.
This is not working means passport.intialize() or passport.authenticate is not being called
Router calling method
var oauth = require("../oauth/accesstoken");
router.post('/auth', function(req, res) {
oauth.auth(req, res);
});
What's wrong there
Thanks
See the express reference for app.method and passing middleware arguments.
You can export an array of handler functions like so:
// ./oauth.js
exports.init = [
// express_session({secret: 'use express-session if you like'),
// passport.session(),
passport.initialize()
];
exports.login = [
passport.authenticate('local', options),
serialize,
generateToken,
(req, res) => res.send('you are logged in')
];
and use them in your app/router:
// ./app.js
const auth = require('./oauth');
app.use(auth.init);
app.post('/login', auth.login);
To follow the passport docs,
you should configure the module and call passport.initalize
(a function returning an express middleware function, hence the brackets) separately with app.use