Reputation: 2204
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
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