routes.js 5.3 KB

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