routes.js 7.0 KB

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