router.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**
  2. * @file
  3. *
  4. *
  5. * User: marand
  6. * Date: 30/08/15
  7. * Time: 16:47
  8. */
  9. Router.configure({
  10. layoutTemplate: "layout",
  11. loadingTemplate: "loading",
  12. notFoundTemplate: "notFound",
  13. waitOn: function () {
  14. return [
  15. Meteor.subscribe('posts'),
  16. Meteor.subscribe('push_feed'),
  17. ];
  18. }
  19. });
  20. // C'est un nom de route, pas un nom de template. Mais IR le prend comme nom de
  21. // template par défaut.
  22. Router.route('/', {
  23. name: 'postsList'
  24. });
  25. Router.route('/posts/:_id', {
  26. name: 'postPage',
  27. data: function () {
  28. // "this" is the matched route.
  29. return Posts.findOne(this.params._id);
  30. }
  31. });
  32. Router.route('/posts/:_id/edit', {
  33. name: 'postEdit',
  34. data: function () {
  35. // "this" is the matched route.
  36. return Posts.findOne(this.params._id);
  37. }
  38. });
  39. Router.route('/submit', {
  40. name: 'postSubmit'
  41. });
  42. // Faire une 404 si la page matche la route postPage, mais pas son argument.
  43. // Déclenché pour toute valeur "falsy" (null, false, undefined, empty).
  44. Router.onBeforeAction('dataNotFound', {
  45. only: 'postPage'
  46. });
  47. var requireLogin = function () {
  48. if (!Meteor.user()) {
  49. if (Meteor.loggingIn()) {
  50. // Défini dans Router.configure().
  51. this.render(this.loadingTemplate);
  52. }
  53. else {
  54. this.render('accessDenied');
  55. }
  56. }
  57. else {
  58. this.next();
  59. }
  60. };
  61. // Appliquer le contrôle d'accès à la route postSubmit.
  62. Router.onBeforeAction(requireLogin, {
  63. only: 'postSubmit'
  64. });