J'utilise les options de loginButtons intégrées avec Meteor et je voudrais rediriger après la connexion d'un utilisateur. L'utilisation des extraits de site Web intégrés signifie que je ne peux pas utiliser le rappel avec Meteor.loginwithPassword et que je ne vois aucun crochet à l'intérieur Iron-Router pour faire la redirection.
Aucune suggestion?
Meteor s'affiche souvent si rapidement que la page est chargée avant que l'utilisateur ait été défini. Vous devez utiliser Meteor.loggingIn()
pour tenir compte de la situation dans laquelle vous êtes dans le processus de connexion. Ce code fonctionne pour moi:
this.route('myAccount', {
path: '/',
onBeforeAction: function () {
if (! Meteor.user()) {
if (!Meteor.loggingIn()) Router.go('login');
}
}
}
Cet exemple pourrait être utile
// 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');
});
cela devrait être très facile, ajoutez simplement quelque chose comme:
Tracker.autorun(function() {
var currentRoute = Router.current();
if (currentRoute === null) {
return;
}
if (currentRoute.route.getName() === 'login' && Meteor.user() !== null)
Router.go('WelcomeNewUser');
}
Vous pouvez également simplement utiliser le même itinéraire avec un autre modèle au cas où l'utilisateur ne serait pas connecté.
juste quelque chose comme ça:
this.route('myAccount', {
before: function () {
if (!Meteor.user()) {
this.render('login');
this.stop();
}
}
}
Il n'y a pas de magie, il suffit de regarder dans le docs ;)
Vous pouvez simplement utiliser l'un de vos itinéraires existants que vous avez configuré en Irlande
Router.go ('/ myRouterPathToTemplate')