routes.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. Router.configure({
  2. loadingTemplate: 'loading'
  3. });
  4. Router.onBeforeAction(function() {
  5. var self = this;
  6. var next = self.next;
  7. if (Meteor.userId()) {
  8. Meteor.call("isBanned", function(err, res) {
  9. if (res) {
  10. self.render('banned');
  11. pause();
  12. } else {
  13. next();
  14. }
  15. });
  16. }
  17. });
  18. Router.route("/", {
  19. template: "home"
  20. });
  21. Router.route("/login", {
  22. action: function() {
  23. var user = Meteor.user();
  24. if (user === undefined || user === null) {
  25. this.render("login");
  26. } else {
  27. this.redirect("/");
  28. }
  29. }
  30. });
  31. Router.route("/signup", {
  32. action: function() {
  33. var user = Meteor.user();
  34. if (user === undefined || user === null) {
  35. this.render("register");
  36. } else {
  37. this.redirect("/");
  38. }
  39. }
  40. });
  41. Router.route("/settings", {
  42. action: function() {
  43. if (!Meteor.userId()) {
  44. this.redirect("/");
  45. } else {
  46. this.render("settings");
  47. }
  48. }
  49. });
  50. Router.route("/terms", {
  51. template: "terms"
  52. });
  53. Router.route("/contact", {
  54. template: "contact"
  55. });
  56. Router.route("/faq", {
  57. template: "faq"
  58. });
  59. Router.route("/privacy", {
  60. template: "privacy"
  61. });
  62. Router.route("/about", {
  63. template: "about"
  64. });
  65. Router.route("/admin", {
  66. waitOn: function() {
  67. return Meteor.subscribe("isAdmin", Meteor.userId());
  68. },
  69. action: function() {
  70. var user = Meteor.users.findOne({});
  71. if (user !== undefined && user.profile !== undefined && user.profile.rank === "admin") {
  72. this.render("admin");
  73. } else {
  74. this.redirect("/");
  75. }
  76. }
  77. });
  78. Router.route("/stations", {
  79. waitOn: function() {
  80. return Meteor.subscribe("isAdmin", Meteor.userId());
  81. },
  82. action: function() {
  83. var user = Meteor.users.findOne({});
  84. if (user !== undefined && user.profile !== undefined && user.profile.rank === "admin") {
  85. this.render("stations");
  86. } else {
  87. this.redirect("/");
  88. }
  89. }
  90. });
  91. Router.route("/admin/alerts", {
  92. waitOn: function() {
  93. return Meteor.subscribe("isAdmin", Meteor.userId());
  94. },
  95. action: function() {
  96. var user = Meteor.users.findOne({});
  97. if (user !== undefined && user.profile !== undefined && user.profile.rank === "admin") {
  98. this.render("alertsDashboard");
  99. } else {
  100. this.redirect("/");
  101. }
  102. }
  103. });
  104. Router.route("/:type", {
  105. template: "room"
  106. });
  107. Router.route("/u/:user", {
  108. template: "profile"
  109. });