router.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 Meteor.subscribe('posts');
  15. }
  16. });
  17. // C'est un nom de route, pas un nom de template. Mais IR le prend comme nom de
  18. // template par défaut.
  19. Router.route('/', {
  20. name: 'postsList'
  21. });
  22. Router.route('/posts/:_id', {
  23. name: 'postPage',
  24. data: function () {
  25. // "this" is the matched route.
  26. return Posts.findOne(this.params._id);
  27. }
  28. });
  29. Router.route('/posts/:_id/edit', {
  30. name: 'postEdit',
  31. data: function () {
  32. // "this" is the matched route.
  33. return Posts.findOne(this.params._id);
  34. }
  35. });
  36. Router.route('/submit', {
  37. name: 'postSubmit'
  38. });
  39. // Faire une 404 si la page matche la route postPage, mais pas son argument.
  40. // Déclenché pour toute valeur "falsy" (null, false, undefined, empty).
  41. Router.onBeforeAction('dataNotFound', {
  42. only: 'postPage'
  43. });
  44. var requireLogin = function () {
  45. if (!Meteor.user()) {
  46. if (Meteor.loggingIn()) {
  47. // Défini dans Router.configure().
  48. this.render(this.loadingTemplate);
  49. }
  50. else {
  51. this.render('accessDenied');
  52. }
  53. }
  54. else {
  55. this.next();
  56. }
  57. };
  58. // Appliquer le contrôle d'accès à la route postSubmit.
  59. Router.onBeforeAction(requireLogin, {
  60. only: 'postSubmit'
  61. });