routes.js 5.4 KB

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