I'm using the built in loginButtons options with Meteor and I would like to redirect after a user logs in. Using the built in web snippets means I can't use the callback with Meteor.loginwithPassword and I can't see any hooks inside Iron-Router to do the redirect.
Any suggestions?
Meteor often renders so quickly that the page is being loaded before the user has been defined. You need to use Meteor.loggingIn()
to account for the situation in which you are in the process of logging in. This code works for me:
this.route('myAccount', { path: '/', onBeforeAction: function () { if (! Meteor.user()) { if (!Meteor.loggingIn()) Router.go('login'); } } }
This example might be useful
// main route render a template Router.route('/', function () { this.render('main'); }); // render login template Router.route('/login', function () { this.render('login'); }); // we want to be sure that the user is logging in // for all routes but login Router.onBeforeAction(function () { if (!Meteor.user() && !Meteor.loggingIn()) { this.redirect('/login'); } else { // required by Iron to process the route handler this.next(); } }, { except: ['login'] }); // add here other routes // catchall route Router.route('/(.*)', function () { this.redirect('/catchallpage'); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With