routes (1).js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // routes.js
  2. import passport from "passport";
  3. import accountRouter from "./api/accounts/account.router.js";
  4. import authRouter from "./api/auth/auth.router.js";
  5. import subscriptionRouter from "./api/subscriptions/subscription.router.js";
  6. import teamRouter from "./api/teams/team.router.js";
  7. import userRouter from "./api/users/user.router.js";
  8. import webhookRouter from "./api/webhooks/webhook.router.js";
  9. import workspaceRouter from "./api/workspaces/workspace.router.js";
  10. import publicRouter from "./api/public/public.router.js";
  11. import leadsRouter from "./api/leads/leads.router.js";
  12. import tokensRouter from "./api/tokens/tokens.router.js";
  13. import ROLE from "./api/users/role.model.js";
  14. import authorizeRequest from "./middlewares/authorizeRequest.middleware.js";
  15. import { setLang } from "./middlewares/lang.middleware.js";
  16. import authorizeSubscription from "./middlewares/authorizeSubscription.middleware.js";
  17. // APP ROUTES
  18. export default function routes(app) {
  19. // API ROUTES
  20. app.use("/api/v1/auth", authRouter);
  21. app.use(
  22. "/api/v1/users",
  23. passport.authenticate("jwt", { session: false }),
  24. setLang(),
  25. userRouter
  26. );
  27. app.use(
  28. "/api/v1/workspaces",
  29. passport.authenticate("jwt", { session: false }),
  30. setLang(),
  31. workspaceRouter
  32. );
  33. app.use(
  34. "/api/v1/accounts",
  35. passport.authenticate("jwt", { session: false }),
  36. setLang(),
  37. authorizeRequest([ROLE.ADMIN]),
  38. accountRouter
  39. );
  40. app.use("/api/v1/stripe/webhook", webhookRouter);
  41. app.use("/api/v1/stripe", subscriptionRouter);
  42. app.use(
  43. "/api/v1/teams",
  44. passport.authenticate("jwt", { session: false }),
  45. setLang(),
  46. authorizeRequest([ROLE.ADMIN]),
  47. teamRouter
  48. );
  49. // Leads and tokens routes with subscription check
  50. app.use(
  51. "/api/v1/leads",
  52. passport.authenticate("jwt", { session: false }),
  53. setLang(),
  54. authorizeSubscription(), // New middleware for subscription check
  55. leadsRouter
  56. );
  57. app.use(
  58. "/api/v1/tokens",
  59. passport.authenticate("jwt", { session: false }),
  60. setLang(),
  61. authorizeSubscription(), // New middleware for subscription check
  62. tokensRouter
  63. );
  64. // Public API routes - no authentication required
  65. app.use("/api/v1/public", setLang(), publicRouter);
  66. }