Umbro
Umbro

Reputation: 2204

How return a user object in passport.authenticate (local) when the user has logged in?

How can I set in the authController file that I am logged in to return a user object to me? I'm trying to do it this way to set res.json (req.body) in the userControllerer file inexports.register, but this probably returns the user when it is not known yet whether he is logged in? And my point is that, as in authController is success, it returns the object of the logged in user to me.

Routes/index.js

const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
const authController = require('../controllers/authController');

router.get('/register', userController.registerForm);
router.post('/login', authController.login);

router.post('/register', 
  userController.validateRegister,
  userController.register
  authController.login
);

module.exports = router;

Controllers/userController.js

const mongoose = require('mongoose');
const User = mongoose.model('User');

exports.registerForm = (req, res) => {
  res.json(req.body);
};

exports.register = async (req, res, next) => {
  const newUser = new User({ email: req.body.email, name: req.body.name })
  await User.register(newUser, req.body.password);

  next()
}

Controllers/authController.js

const passport = require('passport');

exports.login = passport.authenticate('local', {
     failureRedirect: '/login',
     successRedirect: '/'
})

Upvotes: 0

Views: 174

Answers (1)

shubham
shubham

Reputation: 449

use the following implementation:

Routes/index.js

router.post('/login',
  passport.authenticate('local'),
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.send(req.user);
  });

Upvotes: 1

Related Questions