2
0

routes.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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. } else {
  12. document.title = 'Musare';
  13. next();
  14. }
  15. });
  16. } else {
  17. this.next();
  18. }
  19. });
  20. Router.route("/", {
  21. template: "home"
  22. });
  23. Router.route("/login", {
  24. action: function() {
  25. var user = Meteor.user();
  26. if (user === undefined || user === null) {
  27. this.render("login");
  28. } else {
  29. this.redirect("/");
  30. }
  31. }
  32. });
  33. Router.route("/register", {
  34. action: function() {
  35. var user = Meteor.user();
  36. if (user === undefined || user === null) {
  37. this.render("register");
  38. } else {
  39. this.redirect("/");
  40. }
  41. }
  42. });
  43. Router.route("/settings", {
  44. action: function() {
  45. if (!Meteor.userId()) {
  46. this.redirect("/");
  47. } else {
  48. this.render("settings");
  49. }
  50. }
  51. });
  52. Router.route("/add", {
  53. template: "addSong"
  54. });
  55. Router.route("/terms", {
  56. template: "terms"
  57. });
  58. Router.route("/contact", {
  59. template: "contact"
  60. });
  61. Router.route("/faq", {
  62. template: "faq"
  63. });
  64. Router.route("/privacy", {
  65. template: "privacy"
  66. });
  67. Router.route("/feedback", {
  68. template: "feedback"
  69. })
  70. Router.route("/team", {
  71. template: "team"
  72. })
  73. Router.route("/news", {
  74. template: "news"
  75. })
  76. Router.route("/welcome", {
  77. template: "landing"
  78. })
  79. Router.route("/project", {
  80. template: "project"
  81. })
  82. Router.route("/donate", {
  83. template: "donate"
  84. })
  85. Router.route("/admin", {
  86. waitOn: function() {
  87. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  88. },
  89. action: function() {
  90. var user = Meteor.users.findOne({});
  91. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  92. this.render("admin");
  93. } else {
  94. this.redirect("/");
  95. }
  96. }
  97. });
  98. Router.route("/admin/songs", {
  99. waitOn: function() {
  100. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  101. },
  102. action: function() {
  103. var user = Meteor.users.findOne({});
  104. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  105. this.render("manageSongs");
  106. } else {
  107. this.redirect("/");
  108. }
  109. }
  110. });
  111. Router.route("/admin/queues", {
  112. waitOn: function() {
  113. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  114. },
  115. action: function() {
  116. var user = Meteor.users.findOne({});
  117. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  118. this.render("queues");
  119. } else {
  120. this.redirect("/");
  121. }
  122. }
  123. });
  124. Router.route("/admin/alerts", {
  125. waitOn: function() {
  126. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  127. },
  128. action: function() {
  129. var user = Meteor.users.findOne({});
  130. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  131. this.render("alertsDashboard");
  132. } else {
  133. this.redirect("/");
  134. }
  135. }
  136. });
  137. Router.route("/u/:user", function() {
  138. this.render("profile");
  139. });
  140. Router.route("/:type", {
  141. waitOn: function() {
  142. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId()), Meteor.subscribe("rooms")];
  143. },
  144. action: function() {
  145. var user = Meteor.users.findOne({});
  146. var room = Rooms.findOne({type: this.params.type});
  147. if ((room.private === true && user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) || room.private === false) {
  148. this.render("room");
  149. } else {
  150. this.redirect("/");
  151. }
  152. }
  153. });
  154. Router.route("/:type/manage", {
  155. waitOn: function() {
  156. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  157. },
  158. action: function() {
  159. var user = Meteor.users.findOne({});
  160. var room = Rooms.findOne({type: this.params.type});
  161. if (room !== undefined && user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  162. this.render("manageStation");
  163. } else {
  164. this.redirect("/");
  165. }
  166. }
  167. });