routes.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  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 (Session.get("rTimeInterval") !== undefined) {
  10. Meteor.clearInterval(Session.get("rTimeInterval"));
  11. Session.set("rTimeInterval", undefined);
  12. }
  13. if(isMaintanance === true){
  14. var user = Meteor.user();
  15. if(user !== null && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")){
  16. next();
  17. } else {
  18. this.render("maintenance");
  19. }
  20. } else {
  21. if (Meteor.userId()) {
  22. Meteor.call("isBanned", function(err, res) {
  23. if (res) {
  24. self.render('banned');
  25. } else {
  26. document.title = 'Musare';
  27. next();
  28. }
  29. });
  30. } else {
  31. next();
  32. }
  33. }
  34. });
  35. Router.route("/", {
  36. template: "home",
  37. name: "home"
  38. });
  39. Router.route("/login", {
  40. action: function() {
  41. var user = Meteor.user();
  42. if (user === undefined || user === null) {
  43. this.render("loginRegister");
  44. } else {
  45. this.redirect("/");
  46. }
  47. },
  48. name: "login"
  49. });
  50. Router.route("/register", {
  51. action: function() {
  52. var user = Meteor.user();
  53. if (user === undefined || user === null) {
  54. this.render("loginRegister");
  55. } else {
  56. this.redirect("/");
  57. }
  58. },
  59. name: "register"
  60. });
  61. Router.route("/settings", {
  62. action: function() {
  63. if (!Meteor.userId()) {
  64. this.redirect("/");
  65. } else {
  66. this.render("settings");
  67. }
  68. },
  69. name: "settings"
  70. });
  71. Router.route("/add", {
  72. template: "addSong",
  73. name: "addSong"
  74. });
  75. Router.route("/terms", {
  76. template: "terms",
  77. name: "terms"
  78. });
  79. Router.route("/contact", {
  80. template: "contact",
  81. name: "contact"
  82. });
  83. Router.route("/faq", {
  84. template: "faq",
  85. name: "faq"
  86. });
  87. Router.route("/privacy", {
  88. template: "privacy",
  89. name: "privacy"
  90. });
  91. Router.route("/feedback", {
  92. template: "feedback",
  93. name: "feedback"
  94. })
  95. //Router.route("/team", {
  96. // template: "team",
  97. // name: "team"
  98. //})
  99. Router.route("/news", {
  100. template: "news",
  101. name: "news"
  102. })
  103. Router.route("/project", {
  104. template: "project",
  105. name: "project"
  106. })
  107. /*Router.route("/donate", {
  108. template: "donate",
  109. name: "donate"
  110. })*/
  111. Router.route("/admin", {
  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("admin");
  119. } else {
  120. this.redirect("/");
  121. }
  122. },
  123. name: "admin"
  124. });
  125. Router.route("/admin/songs", {
  126. waitOn: function() {
  127. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  128. },
  129. action: function() {
  130. var user = Meteor.users.findOne({});
  131. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  132. this.render("manageSongs");
  133. } else {
  134. this.redirect("/");
  135. }
  136. },
  137. name: "manageSongs"
  138. });
  139. Router.route("/admin/queues", {
  140. waitOn: function() {
  141. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  142. },
  143. action: function() {
  144. var user = Meteor.users.findOne({});
  145. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  146. this.render("queues");
  147. } else {
  148. this.redirect("/");
  149. }
  150. },
  151. name: "queues"
  152. });
  153. Router.route("/admin/alerts", {
  154. waitOn: function() {
  155. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  156. },
  157. action: function() {
  158. var user = Meteor.users.findOne({});
  159. if (user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  160. this.render("alertsDashboard");
  161. } else {
  162. this.redirect("/");
  163. }
  164. },
  165. name: "alertsDashboard"
  166. });
  167. Router.route("/u/:user", {
  168. template: "profile",
  169. name: "profile"
  170. });
  171. Router.route("/community/:name", {
  172. waitOn: function() {
  173. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId()), Meteor.subscribe("community_station", this.params.name)];
  174. },
  175. action: function() {
  176. var user = Meteor.users.findOne({});
  177. var room = CommunityStations.findOne({name: this.params.name});
  178. if (room !== undefined) {
  179. if (
  180. (room !== undefined)
  181. &&
  182. (
  183. (room.privacy === "private" && user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) ||
  184. (user !== undefined && user.profile !== undefined && room.allowed.includes(Meteor.userId())) ||
  185. room.privacy !== "private" ||
  186. room.owner === Meteor.userId())
  187. ) {
  188. this.render("communityStation");
  189. } else {
  190. this.redirect("/");
  191. }
  192. } else {
  193. this.render("404");
  194. }
  195. },
  196. name: "communityStation"
  197. });
  198. Router.route("/:type", {
  199. waitOn: function() {
  200. return [Meteor.subscribe("songsType", this.params.type), Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId()), Meteor.subscribe("rooms")];
  201. },
  202. action: function() {
  203. var user = Meteor.users.findOne({});
  204. var room = Rooms.findOne({type: this.params.type});
  205. if (room !== undefined) {
  206. if ((room.private === true && user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) || room.private === false) {
  207. Session.set("type", this.params.type);
  208. this.render("room");
  209. } else {
  210. this.redirect("/");
  211. }
  212. } else {
  213. this.render("404");
  214. }
  215. },
  216. name: "station"
  217. });
  218. Router.route("/:type/manage", {
  219. waitOn: function() {
  220. return [Meteor.subscribe("isModerator", Meteor.userId()), Meteor.subscribe("isAdmin", Meteor.userId())];
  221. },
  222. action: function() {
  223. var user = Meteor.users.findOne({});
  224. var room = Rooms.findOne({type: this.params.type});
  225. if (room !== undefined && user !== undefined && user.profile !== undefined && (user.profile.rank === "admin" || user.profile.rank === "moderator")) {
  226. this.render("manageStation");
  227. } else {
  228. this.redirect("/");
  229. }
  230. },
  231. name: "manageStation"
  232. });