routes.js 5.1 KB

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