I'm making an AJAX login with NodeJS. This is my current code:
routes.js:
app.post('/login', (req, res, next) => {
passport.authenticate('local-login', (err, user, info) => {
if (err)
return next(err);
if (!user)
return res.json({type: 'error', response: info});
req.logIn(user, (err) => {
if (err)
return next(err);
//return res.json({type: 'success', response: user});
return res.redirect(req.originalUrl);
//return res.redirect(req.get('referer'));
});
})(req, res, next);
});
custom.js
let login = () => {
$.post( "/login", { email: $('#inputUsername').val(), password: $('#inputPassword').val() })
.done((data) => {
if(data.type === 'error'){
$( "#logFormError" ).html('<b>Error:</b> ' + (data.response.message ? data.response.message : data.response));
if(!$("#logFormError").is(":visible"))
$( "#logFormError" ).toggle();
}else{
if($("#logFormError").is(":visible"))
$( "#logFormError" ).toggle();
}
})
.fail((error) => {
$( "#logFormError" ).html('<b>Error:</b> ' + error);
if(!$("#logFormError").is(":visible"))
$( "#logFormError" ).toggle();
})}
replaysController.js (the page I'm displaying the login form right now):
res.render('../views/pages/replays', {replay: replay, user: req.user});
What I'm trying to achieve is to have the page I'm currently in with the new login info. I don't want to use client javascript to play with the different items of the page because the page may be totally different (home, replays, shop, forums...) so elements aren't the same and it's not generic.
As you can see, I've been already testing res.redirect(req.get('referer')); and others but the page doesn't redirect, it just makes the request and stays there.
What am I doing wrong?