@intlayer/backend 3.0.3 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/cjs/controllers/dictionary.controller.cjs +91 -18
  2. package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -1
  3. package/dist/cjs/controllers/organization.controller.cjs +140 -12
  4. package/dist/cjs/controllers/organization.controller.cjs.map +1 -1
  5. package/dist/cjs/controllers/project.controller.cjs +181 -31
  6. package/dist/cjs/controllers/project.controller.cjs.map +1 -1
  7. package/dist/cjs/controllers/projectAccessKey.controller.cjs +61 -10
  8. package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -1
  9. package/dist/cjs/controllers/sessionAuth.controller.cjs +291 -62
  10. package/dist/cjs/controllers/sessionAuth.controller.cjs.map +1 -1
  11. package/dist/cjs/controllers/stripe.controller.cjs +84 -0
  12. package/dist/cjs/controllers/stripe.controller.cjs.map +1 -0
  13. package/dist/cjs/controllers/user.controller.cjs +49 -20
  14. package/dist/cjs/controllers/user.controller.cjs.map +1 -1
  15. package/dist/cjs/emails/SubscriptionPaymentCancellation.cjs +182 -0
  16. package/dist/cjs/emails/SubscriptionPaymentCancellation.cjs.map +1 -0
  17. package/dist/cjs/emails/SubscriptionPaymentError.cjs +182 -0
  18. package/dist/cjs/emails/SubscriptionPaymentError.cjs.map +1 -0
  19. package/dist/cjs/emails/SubscriptionPaymentSuccess.cjs +188 -0
  20. package/dist/cjs/emails/SubscriptionPaymentSuccess.cjs.map +1 -0
  21. package/dist/cjs/export.cjs.map +1 -1
  22. package/dist/cjs/index.cjs +16 -5
  23. package/dist/cjs/index.cjs.map +1 -1
  24. package/dist/cjs/middlewares/oAuth2.middleware.cjs +10 -0
  25. package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -1
  26. package/dist/cjs/middlewares/sessionAuth.middleware.cjs +50 -10
  27. package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -1
  28. package/dist/cjs/routes/dictionary.routes.cjs +2 -62
  29. package/dist/cjs/routes/dictionary.routes.cjs.map +1 -1
  30. package/dist/cjs/routes/organization.routes.cjs +1 -25
  31. package/dist/cjs/routes/organization.routes.cjs.map +1 -1
  32. package/dist/cjs/routes/project.routes.cjs +10 -85
  33. package/dist/cjs/routes/project.routes.cjs.map +1 -1
  34. package/dist/cjs/routes/sessionAuth.routes.cjs +26 -25
  35. package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -1
  36. package/dist/cjs/routes/stripe.routes.cjs +42 -0
  37. package/dist/cjs/routes/stripe.routes.cjs.map +1 -0
  38. package/dist/cjs/routes/user.routes.cjs +6 -27
  39. package/dist/cjs/routes/user.routes.cjs.map +1 -1
  40. package/dist/cjs/schemas/organization.schema.cjs +5 -0
  41. package/dist/cjs/schemas/organization.schema.cjs.map +1 -1
  42. package/dist/cjs/{middlewares/admin.middleware.cjs → schemas/plans.schema.cjs} +32 -20
  43. package/dist/cjs/schemas/plans.schema.cjs.map +1 -0
  44. package/dist/cjs/schemas/project.schema.cjs +14 -1
  45. package/dist/cjs/schemas/project.schema.cjs.map +1 -1
  46. package/dist/cjs/schemas/user.schema.cjs +5 -1
  47. package/dist/cjs/schemas/user.schema.cjs.map +1 -1
  48. package/dist/cjs/services/dictionary.service.cjs.map +1 -1
  49. package/dist/cjs/services/email.service.cjs +113 -43
  50. package/dist/cjs/services/email.service.cjs.map +1 -1
  51. package/dist/cjs/services/oAuth2.service.cjs +16 -8
  52. package/dist/cjs/services/oAuth2.service.cjs.map +1 -1
  53. package/dist/cjs/services/organization.service.cjs +63 -8
  54. package/dist/cjs/services/organization.service.cjs.map +1 -1
  55. package/dist/cjs/services/project.service.cjs +9 -5
  56. package/dist/cjs/services/project.service.cjs.map +1 -1
  57. package/dist/cjs/services/projectAccessKey.service.cjs +42 -10
  58. package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -1
  59. package/dist/cjs/services/sessionAuth.service.cjs +9 -11
  60. package/dist/cjs/services/sessionAuth.service.cjs.map +1 -1
  61. package/dist/cjs/services/subscription.service.cjs +201 -0
  62. package/dist/cjs/services/subscription.service.cjs.map +1 -0
  63. package/dist/cjs/services/user.service.cjs +1 -3
  64. package/dist/cjs/services/user.service.cjs.map +1 -1
  65. package/dist/cjs/types/dictionary.types.cjs.map +1 -1
  66. package/dist/cjs/types/organization.types.cjs.map +1 -1
  67. package/dist/cjs/types/plan.types.cjs +17 -0
  68. package/dist/cjs/types/plan.types.cjs.map +1 -0
  69. package/dist/cjs/types/project.types.cjs.map +1 -1
  70. package/dist/cjs/types/session.types.cjs.map +1 -1
  71. package/dist/cjs/types/user.types.cjs.map +1 -1
  72. package/dist/cjs/utils/errors/ErrorHandler.cjs +29 -9
  73. package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -1
  74. package/dist/cjs/utils/errors/ErrorsClass.cjs +17 -3
  75. package/dist/cjs/utils/errors/ErrorsClass.cjs.map +1 -1
  76. package/dist/cjs/utils/errors/errorCodes.cjs +321 -9
  77. package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -1
  78. package/dist/cjs/utils/mapper/organization.cjs.map +1 -1
  79. package/dist/cjs/utils/mapper/project.cjs +19 -3
  80. package/dist/cjs/utils/mapper/project.cjs.map +1 -1
  81. package/dist/cjs/utils/mapper/user.cjs.map +1 -1
  82. package/dist/cjs/utils/plan.cjs +75 -0
  83. package/dist/cjs/utils/plan.cjs.map +1 -0
  84. package/dist/cjs/utils/responseData.cjs +8 -0
  85. package/dist/cjs/utils/responseData.cjs.map +1 -1
  86. package/dist/cjs/webhooks/stripe.webhook.cjs +133 -0
  87. package/dist/cjs/webhooks/stripe.webhook.cjs.map +1 -0
  88. package/dist/esm/controllers/dictionary.controller.mjs +91 -18
  89. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
  90. package/dist/esm/controllers/organization.controller.mjs +140 -12
  91. package/dist/esm/controllers/organization.controller.mjs.map +1 -1
  92. package/dist/esm/controllers/project.controller.mjs +181 -31
  93. package/dist/esm/controllers/project.controller.mjs.map +1 -1
  94. package/dist/esm/controllers/projectAccessKey.controller.mjs +61 -10
  95. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
  96. package/dist/esm/controllers/sessionAuth.controller.mjs +287 -61
  97. package/dist/esm/controllers/sessionAuth.controller.mjs.map +1 -1
  98. package/dist/esm/controllers/stripe.controller.mjs +60 -0
  99. package/dist/esm/controllers/stripe.controller.mjs.map +1 -0
  100. package/dist/esm/controllers/user.controller.mjs +49 -20
  101. package/dist/esm/controllers/user.controller.mjs.map +1 -1
  102. package/dist/esm/emails/SubscriptionPaymentCancellation.mjs +168 -0
  103. package/dist/esm/emails/SubscriptionPaymentCancellation.mjs.map +1 -0
  104. package/dist/esm/emails/SubscriptionPaymentError.mjs +168 -0
  105. package/dist/esm/emails/SubscriptionPaymentError.mjs.map +1 -0
  106. package/dist/esm/emails/SubscriptionPaymentSuccess.mjs +174 -0
  107. package/dist/esm/emails/SubscriptionPaymentSuccess.mjs.map +1 -0
  108. package/dist/esm/export.mjs.map +1 -1
  109. package/dist/esm/index.mjs +19 -7
  110. package/dist/esm/index.mjs.map +1 -1
  111. package/dist/esm/middlewares/oAuth2.middleware.mjs +10 -0
  112. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
  113. package/dist/esm/middlewares/sessionAuth.middleware.mjs +49 -9
  114. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
  115. package/dist/esm/routes/dictionary.routes.mjs +2 -62
  116. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  117. package/dist/esm/routes/organization.routes.mjs +1 -25
  118. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  119. package/dist/esm/routes/project.routes.mjs +10 -85
  120. package/dist/esm/routes/project.routes.mjs.map +1 -1
  121. package/dist/esm/routes/sessionAuth.routes.mjs +29 -26
  122. package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -1
  123. package/dist/esm/routes/stripe.routes.mjs +17 -0
  124. package/dist/esm/routes/stripe.routes.mjs.map +1 -0
  125. package/dist/esm/routes/user.routes.mjs +6 -27
  126. package/dist/esm/routes/user.routes.mjs.map +1 -1
  127. package/dist/esm/schemas/organization.schema.mjs +5 -0
  128. package/dist/esm/schemas/organization.schema.mjs.map +1 -1
  129. package/dist/esm/schemas/plans.schema.mjs +32 -0
  130. package/dist/esm/schemas/plans.schema.mjs.map +1 -0
  131. package/dist/esm/schemas/project.schema.mjs +13 -1
  132. package/dist/esm/schemas/project.schema.mjs.map +1 -1
  133. package/dist/esm/schemas/user.schema.mjs +5 -1
  134. package/dist/esm/schemas/user.schema.mjs.map +1 -1
  135. package/dist/esm/services/dictionary.service.mjs.map +1 -1
  136. package/dist/esm/services/email.service.mjs +125 -43
  137. package/dist/esm/services/email.service.mjs.map +1 -1
  138. package/dist/esm/services/oAuth2.service.mjs +16 -8
  139. package/dist/esm/services/oAuth2.service.mjs.map +1 -1
  140. package/dist/esm/services/organization.service.mjs +58 -7
  141. package/dist/esm/services/organization.service.mjs.map +1 -1
  142. package/dist/esm/services/project.service.mjs +9 -5
  143. package/dist/esm/services/project.service.mjs.map +1 -1
  144. package/dist/esm/services/projectAccessKey.service.mjs +42 -10
  145. package/dist/esm/services/projectAccessKey.service.mjs.map +1 -1
  146. package/dist/esm/services/sessionAuth.service.mjs +9 -10
  147. package/dist/esm/services/sessionAuth.service.mjs.map +1 -1
  148. package/dist/esm/services/subscription.service.mjs +178 -0
  149. package/dist/esm/services/subscription.service.mjs.map +1 -0
  150. package/dist/esm/services/user.service.mjs +1 -3
  151. package/dist/esm/services/user.service.mjs.map +1 -1
  152. package/dist/esm/types/plan.types.mjs +1 -0
  153. package/dist/esm/types/plan.types.mjs.map +1 -0
  154. package/dist/esm/utils/errors/ErrorHandler.mjs +29 -9
  155. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
  156. package/dist/esm/utils/errors/ErrorsClass.mjs +17 -3
  157. package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -1
  158. package/dist/esm/utils/errors/errorCodes.mjs +321 -9
  159. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
  160. package/dist/esm/utils/mapper/organization.mjs.map +1 -1
  161. package/dist/esm/utils/mapper/project.mjs +17 -2
  162. package/dist/esm/utils/mapper/project.mjs.map +1 -1
  163. package/dist/esm/utils/mapper/user.mjs.map +1 -1
  164. package/dist/esm/utils/plan.mjs +50 -0
  165. package/dist/esm/utils/plan.mjs.map +1 -0
  166. package/dist/esm/utils/responseData.mjs +8 -0
  167. package/dist/esm/utils/responseData.mjs.map +1 -1
  168. package/dist/esm/webhooks/stripe.webhook.mjs +113 -0
  169. package/dist/esm/webhooks/stripe.webhook.mjs.map +1 -0
  170. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
  171. package/dist/types/controllers/organization.controller.d.ts.map +1 -1
  172. package/dist/types/controllers/project.controller.d.ts +9 -7
  173. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  174. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  175. package/dist/types/controllers/sessionAuth.controller.d.ts +28 -9
  176. package/dist/types/controllers/sessionAuth.controller.d.ts.map +1 -1
  177. package/dist/types/controllers/stripe.controller.d.ts +17 -0
  178. package/dist/types/controllers/stripe.controller.d.ts.map +1 -0
  179. package/dist/types/controllers/user.controller.d.ts.map +1 -1
  180. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +20 -0
  181. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -0
  182. package/dist/types/emails/SubscriptionPaymentError.d.ts +20 -0
  183. package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -0
  184. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +20 -0
  185. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts.map +1 -0
  186. package/dist/types/export.d.ts +2 -0
  187. package/dist/types/export.d.ts.map +1 -1
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
  190. package/dist/types/middlewares/sessionAuth.middleware.d.ts +13 -7
  191. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
  192. package/dist/types/models/dictionary.model.d.ts +1 -1
  193. package/dist/types/models/oAuth2.model.d.ts +1 -1
  194. package/dist/types/models/organization.model.d.ts +2 -1
  195. package/dist/types/models/organization.model.d.ts.map +1 -1
  196. package/dist/types/models/plan.moddel.d.ts +11 -0
  197. package/dist/types/models/plan.moddel.d.ts.map +1 -0
  198. package/dist/types/models/project.model.d.ts +1 -1
  199. package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
  200. package/dist/types/routes/organization.routes.d.ts.map +1 -1
  201. package/dist/types/routes/project.routes.d.ts.map +1 -1
  202. package/dist/types/routes/sessionAuth.routes.d.ts +15 -2
  203. package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -1
  204. package/dist/types/routes/stripe.routes.d.ts +10 -0
  205. package/dist/types/routes/stripe.routes.d.ts.map +1 -0
  206. package/dist/types/routes/user.routes.d.ts.map +1 -1
  207. package/dist/types/schemas/dictionary.schema.d.ts +2 -2
  208. package/dist/types/schemas/oAuth2.schema.d.ts +2 -2
  209. package/dist/types/schemas/organization.schema.d.ts +3 -2
  210. package/dist/types/schemas/organization.schema.d.ts.map +1 -1
  211. package/dist/types/schemas/plans.schema.d.ts +16 -0
  212. package/dist/types/schemas/plans.schema.d.ts.map +1 -0
  213. package/dist/types/schemas/project.schema.d.ts +12 -3
  214. package/dist/types/schemas/project.schema.d.ts.map +1 -1
  215. package/dist/types/schemas/user.schema.d.ts +2 -2
  216. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  217. package/dist/types/services/dictionary.service.d.ts +9 -9
  218. package/dist/types/services/dictionary.service.d.ts.map +1 -1
  219. package/dist/types/services/email.service.d.ts +33 -4
  220. package/dist/types/services/email.service.d.ts.map +1 -1
  221. package/dist/types/services/oAuth2.service.d.ts +7 -5
  222. package/dist/types/services/oAuth2.service.d.ts.map +1 -1
  223. package/dist/types/services/organization.service.d.ts +27 -6
  224. package/dist/types/services/organization.service.d.ts.map +1 -1
  225. package/dist/types/services/plans.service.d.ts +35 -0
  226. package/dist/types/services/plans.service.d.ts.map +1 -0
  227. package/dist/types/services/project.service.d.ts +6 -6
  228. package/dist/types/services/project.service.d.ts.map +1 -1
  229. package/dist/types/services/projectAccessKey.service.d.ts +4 -4
  230. package/dist/types/services/projectAccessKey.service.d.ts.map +1 -1
  231. package/dist/types/services/sessionAuth.service.d.ts +9 -16
  232. package/dist/types/services/sessionAuth.service.d.ts.map +1 -1
  233. package/dist/types/services/subscription.service.d.ts +22 -0
  234. package/dist/types/services/subscription.service.d.ts.map +1 -0
  235. package/dist/types/services/user.service.d.ts +11 -19
  236. package/dist/types/services/user.service.d.ts.map +1 -1
  237. package/dist/types/types/dictionary.types.d.ts +2 -2
  238. package/dist/types/types/dictionary.types.d.ts.map +1 -1
  239. package/dist/types/types/organization.types.d.ts +4 -2
  240. package/dist/types/types/organization.types.d.ts.map +1 -1
  241. package/dist/types/types/plan.types.d.ts +18 -0
  242. package/dist/types/types/plan.types.d.ts.map +1 -0
  243. package/dist/types/types/project.types.d.ts +13 -2
  244. package/dist/types/types/project.types.d.ts.map +1 -1
  245. package/dist/types/types/session.types.d.ts +6 -6
  246. package/dist/types/types/session.types.d.ts.map +1 -1
  247. package/dist/types/types/user.types.d.ts +2 -1
  248. package/dist/types/types/user.types.d.ts.map +1 -1
  249. package/dist/types/utils/errors/ErrorHandler.d.ts +5 -3
  250. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
  251. package/dist/types/utils/errors/ErrorsClass.d.ts +4 -1
  252. package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -1
  253. package/dist/types/utils/errors/errorCodes.d.ts +313 -1
  254. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
  255. package/dist/types/utils/mapper/organization.d.ts +1 -1
  256. package/dist/types/utils/mapper/organization.d.ts.map +1 -1
  257. package/dist/types/utils/mapper/project.d.ts +10 -1
  258. package/dist/types/utils/mapper/project.d.ts.map +1 -1
  259. package/dist/types/utils/mapper/user.d.ts +1 -1
  260. package/dist/types/utils/mapper/user.d.ts.map +1 -1
  261. package/dist/types/utils/plan.d.ts +17 -0
  262. package/dist/types/utils/plan.d.ts.map +1 -0
  263. package/dist/types/utils/responseData.d.ts +13 -2
  264. package/dist/types/utils/responseData.d.ts.map +1 -1
  265. package/dist/types/webhooks/stripe.d.ts +3 -0
  266. package/dist/types/webhooks/stripe.d.ts.map +1 -0
  267. package/dist/types/webhooks/stripe.webhook.d.ts +3 -0
  268. package/dist/types/webhooks/stripe.webhook.d.ts.map +1 -0
  269. package/package.json +27 -24
  270. package/dist/cjs/middlewares/admin.middleware.cjs.map +0 -1
  271. package/dist/esm/middlewares/admin.middleware.mjs +0 -20
  272. package/dist/esm/middlewares/admin.middleware.mjs.map +0 -1
@@ -37,7 +37,7 @@ var import_cors = __toESM(require("cors"), 1);
37
37
  var import_dotenv = __toESM(require("dotenv"), 1);
38
38
  var import_express = __toESM(require("express"), 1);
39
39
  var import_express_intlayer = require("express-intlayer");
40
- var import_admin = require('./middlewares/admin.middleware.cjs');
40
+ var import_helmet = __toESM(require("helmet"), 1);
41
41
  var import_oAuth2 = require('./middlewares/oAuth2.middleware.cjs');
42
42
  var import_request = require('./middlewares/request.middleware.cjs');
43
43
  var import_sessionAuth = require('./middlewares/sessionAuth.middleware.cjs');
@@ -46,6 +46,8 @@ var import_organization = require('./routes/organization.routes.cjs');
46
46
  var import_project = require('./routes/project.routes.cjs');
47
47
  var import_sessionAuth2 = require('./routes/sessionAuth.routes.cjs');
48
48
  var import_user = require('./routes/user.routes.cjs');
49
+ var import_stripe = require('./routes/stripe.routes.cjs');
50
+ var import_stripe2 = require('./webhooks/stripe.webhook.cjs');
49
51
  var import_oAuth22 = require('./controllers/oAuth2.controller.cjs');
50
52
  var import_sessionAuth3 = require('./controllers/sessionAuth.controller.cjs');
51
53
  var import_CSRF = require('./utils/CSRF.cjs');
@@ -53,21 +55,29 @@ var import_connectDB = require('./utils/mongoDB/connectDB.cjs');
53
55
  var import_logger = require('./logger/index.cjs');
54
56
  const app = (0, import_express.default)();
55
57
  app.disable("x-powered-by");
58
+ app.use((0, import_helmet.default)());
56
59
  const env = app.get("env");
57
60
  import_logger.logger.info(`run as ${env}`);
58
61
  import_dotenv.default.config({ path: [".env", `.env.${env}`] });
62
+ app.use((0, import_cookie_parser.default)());
63
+ app.use((0, import_express_intlayer.intlayer)());
59
64
  const isDev = env === "development";
60
65
  (0, import_connectDB.connectDB)();
66
+ app.post("/webhook/stripe", (0, import_express.raw)({ type: "application/json" }), import_stripe2.stripeWebhook);
61
67
  app.use((0, import_compression.default)());
62
68
  app.use(import_express.default.json({ limit: "50mb" }));
63
69
  app.use(import_express.default.urlencoded({ extended: true }));
64
- app.use((0, import_cookie_parser.default)());
65
- app.use((0, import_express_intlayer.intlayer)());
66
70
  const whitelist = [process.env.CLIENT_URL];
67
71
  const corsOptions = {
68
72
  origin: whitelist,
69
73
  credentials: true,
70
- allowedHeaders: ["authorization", "Content-Type", "credentials"],
74
+ allowedHeaders: [
75
+ "authorization",
76
+ "Content-Type",
77
+ "credentials",
78
+ "cache-control",
79
+ "Access-Control-Allow-Origin"
80
+ ],
71
81
  exposedHeaders: [""],
72
82
  preflightContinue: false,
73
83
  methods: "GET,HEAD,PUT,PATCH,POST,DELETE"
@@ -86,6 +96,7 @@ app.get("/", (_req, res) => {
86
96
  app.use(/(.*)/, import_sessionAuth.checkUser);
87
97
  app.use(/(.*)/, import_sessionAuth.checkOrganization);
88
98
  app.use(/(.*)/, import_sessionAuth.checkProject);
99
+ app.use(/(.*)/, import_sessionAuth.checkAdmin);
89
100
  if (isDev) {
90
101
  app.use(import_request.logAPIRequestURL);
91
102
  }
@@ -110,11 +121,11 @@ app.use(/(.*)/, (req, res, next) => {
110
121
  }
111
122
  next();
112
123
  });
113
- app.use(/(.*)/, import_admin.checkAdmin);
114
124
  app.use("/api/user", import_user.userRouter);
115
125
  app.use("/api/organization", import_organization.organizationRouter);
116
126
  app.use("/api/project", import_project.projectRouter);
117
127
  app.use("/api/dictionary", import_dictionary.dictionaryRouter);
128
+ app.use("/api/stripe", import_stripe.stripeRouter);
118
129
  app.listen(process.env.PORT, () => {
119
130
  import_logger.logger.info(`Listening on port ${process.env.PORT}`);
120
131
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable import/order */\n\n// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\n\n// Middlewares\nimport { checkAdmin } from '@middlewares/admin.middleware';\nimport {\n attachOAuthInstance,\n authenticateOAuth2,\n RequestWithOAuth2Information,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n checkUser,\n checkOrganization,\n checkProject,\n ResponseWithInformation,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { organizationRouter } from '@routes/organization.routes';\nimport { projectRouter } from '@routes/project.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { userRouter } from '@routes/user.routes';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({ path: ['.env', `.env.${env}`] });\n\nconst isDev = env === 'development';\n\nconnectDB();\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\n// CORS\nconst whitelist: string[] = [process.env.CLIENT_URL!];\nconst corsOptions: CorsOptions = {\n origin: whitelist,\n credentials: true,\n allowedHeaders: ['authorization', 'Content-Type', 'credentials'],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n};\napp.use(cors(corsOptions));\nlogger.info('url whitelist : ', whitelist.join(', '));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Admin check for project and organization\napp.use(/(.*)/, checkAdmin);\n\n// Routes\napp.use('/api/user', userRouter);\napp.use('/api/organization', organizationRouter);\napp.use('/api/project', projectRouter);\napp.use('/api/dictionary', dictionaryRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAwB;AACxB,2BAAyB;AACzB,kBAAuC;AACvC,oBAAmB;AACnB,qBAAsC;AACtC,8BAA4B;AAG5B,mBAA2B;AAC3B,oBAIO;AACP,qBAAiC;AACjC,yBAKO;AAGP,wBAAiC;AACjC,0BAAmC;AACnC,qBAA8B;AAC9B,IAAAA,sBAAkC;AAClC,kBAA2B;AAG3B,IAAAC,iBAA+B;AAC/B,IAAAD,sBAGO;AAGP,kBAAqC;AACrC,uBAA0B;AAG1B,oBAAuB;AAEvB,MAAM,UAAe,eAAAE,SAAQ;AAE7B,IAAI,QAAQ,cAAc;AAG1B,MAAM,MAAM,IAAI,IAAI,KAAK;AAEzB,qBAAO,KAAK,UAAU,GAAG,EAAE;AAE3B,cAAAC,QAAO,OAAO,EAAE,MAAM,CAAC,QAAQ,QAAQ,GAAG,EAAE,EAAE,CAAC;AAE/C,MAAM,QAAQ,QAAQ;AAAA,IAEtB,4BAAU;AAGV,IAAI,QAAI,mBAAAC,SAAY,CAAC;AAGrB,IAAI,IAAI,eAAAF,QAAQ,KAAK,EAAE,OAAO,OAAO,CAAC,CAAC;AAGvC,IAAI,IAAI,eAAAA,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAG9C,IAAI,QAAI,qBAAAG,SAAa,CAAC;AAGtB,IAAI,QAAI,kCAAS,CAAC;AAGlB,MAAM,YAAsB,CAAC,QAAQ,IAAI,UAAW;AACpD,MAAM,cAA2B;AAAA,EAC/B,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,gBAAgB,CAAC,iBAAiB,gBAAgB,aAAa;AAAA,EAC/D,gBAAgB,CAAC,EAAE;AAAA,EACnB,mBAAmB;AAAA,EACnB,SAAS;AACX;AACA,IAAI,QAAI,YAAAC,SAAK,WAAW,CAAC;AACzB,qBAAO,KAAK,oBAAoB,UAAU,KAAK,IAAI,CAAC;AAGpD,IAAI,IAAI,KAAK,CAAC,MAAM,QAAQ;AAC1B,MAAI;AAAA,QACF,2BAAE;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF,CAAC;AAGD,IAAI,IAAI,QAAQ,4BAAS;AACzB,IAAI,IAAI,QAAQ,oCAAiB;AACjC,IAAI,IAAI,QAAQ,+BAAY;AAG5B,IAAI,OAAO;AACT,MAAI,IAAI,+BAAgB;AAC1B;AAGA,IAAI,IAAI,YAAY,yCAAqB;AACzC,IAAI,IAAI,aAAa,qCAAiB;AAGtC,IAAI,IAAI,eAAe,gCAAY;AAGnC,IAAI,IAAI,QAAQ,iCAAmB;AACnC,IAAI,KAAK,iBAAiB,6BAAc;AACxC,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;AAElC,MAAI,CAAC,IAAI,OAAO,UAAU;AACxB,eAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,OAAK;AACP,CAAC;AAGD,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;AAElC,MAAI,IAAI,OAAO,aAAa,WAAW;AACrC,eAAO,kCAAqB,KAAK,KAAK,IAAI;AAAA,EAC5C;AACA,OAAK;AACP,CAAC;AAGD,IAAI,IAAI,QAAQ,uBAAU;AAG1B,IAAI,IAAI,aAAa,sBAAU;AAC/B,IAAI,IAAI,qBAAqB,sCAAkB;AAC/C,IAAI,IAAI,gBAAgB,4BAAa;AACrC,IAAI,IAAI,mBAAmB,kCAAgB;AAG3C,IAAI,OAAO,QAAQ,IAAI,MAAM,MAAM;AACjC,uBAAO,KAAK,qBAAqB,QAAQ,IAAI,IAAI,EAAE;AACrD,CAAC;AAGD,IAAO,cAAQ;","names":["import_sessionAuth","import_oAuth2","express","dotenv","compression","cookieParser","cors"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable import/order */\n\n// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { raw, type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport {\n attachOAuthInstance,\n authenticateOAuth2,\n RequestWithOAuth2Information,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n checkUser,\n checkOrganization,\n checkProject,\n checkAdmin,\n ResponseWithInformation,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { dictionaryRouter } from '@routes/dictionary.routes';\nimport { organizationRouter } from '@routes/organization.routes';\nimport { projectRouter } from '@routes/project.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { userRouter } from '@routes/user.routes';\nimport { stripeRouter } from '@routes/stripe.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\napp.use(helmet());\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({ path: ['.env', `.env.${env}`] });\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst isDev = env === 'development';\n\n// Connect to MongoDB\nconnectDB();\n\n// Stripe\napp.post('/webhook/stripe', raw({ type: 'application/json' }), stripeWebhook);\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\n// CORS\nconst whitelist: string[] = [process.env.CLIENT_URL!];\nconst corsOptions: CorsOptions = {\n origin: whitelist,\n credentials: true,\n allowedHeaders: [\n 'authorization',\n 'Content-Type',\n 'credentials',\n 'cache-control',\n 'Access-Control-Allow-Origin',\n ],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n};\napp.use(cors(corsOptions));\nlogger.info('url whitelist : ', whitelist.join(', '));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\napp.use(/(.*)/, checkAdmin);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Routes\napp.use('/api/user', userRouter);\napp.use('/api/organization', organizationRouter);\napp.use('/api/project', projectRouter);\napp.use('/api/dictionary', dictionaryRouter);\napp.use('/api/stripe', stripeRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":"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","names":["import_sessionAuth","import_stripe","import_oAuth2","express","helmet","dotenv","cookieParser","compression","cors"]}
@@ -61,6 +61,16 @@ const authenticateOAuth2 = async (req, res, next) => {
61
61
  oauthResponse,
62
62
  import_oAuth2.authenticateOptions
63
63
  );
64
+ const {
65
+ organization: organizationRights,
66
+ project: projectRights,
67
+ dictionary: dictionaryRights
68
+ } = oAuthToken.rights;
69
+ res.locals.organizationRights = organizationRights;
70
+ res.locals.isOrganizationAdmin = organizationRights?.admin ?? false;
71
+ res.locals.projectRights = projectRights;
72
+ res.locals.isProjectAdmin = projectRights?.admin ?? false;
73
+ res.locals.dictionaryRights = dictionaryRights;
64
74
  const user = await import_user.UserModel.findById(oAuthToken.user._id);
65
75
  if (user) {
66
76
  res.locals.user = user;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/oAuth2.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { logger } from '@logger';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { UserModel } from '@models/user.model';\nimport { getAuthModel, authenticateOptions } from '@utils/oAuth2';\nimport { NextFunction, Request, Response } from 'express';\nimport OAuth2Server, {\n Request as OAuthRequest,\n Response as OAuthResponse,\n} from 'oauth2-server';\nimport { ResponseWithInformation } from './sessionAuth.middleware';\n\n// Configuration of the OAuth server\nconst oauth = new OAuth2Server({\n model: getAuthModel(),\n accessTokenLifetime: 60 * 60, // 1 hour\n allowBearerTokensInQueryString: true,\n});\n\nexport type RequestWithOAuth2Information<\n P = any,\n ResBody = any,\n ReqBody = any,\n ReqQuery = qs.ParsedQs,\n> = Request<P, ResBody, ReqBody, ReqQuery> & {\n oauth: OAuth2Server;\n};\n\nexport const attachOAuthInstance = async (\n req: Request,\n _res: Response,\n next: NextFunction\n) => {\n // Attach the instance OAuth to the requests\n (req as RequestWithOAuth2Information).oauth = oauth;\n\n next();\n};\n\n// Middleware to authenticate requests\nexport const authenticateOAuth2 = async (\n req: RequestWithOAuth2Information,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n try {\n const hasToken = !!req.headers.authorization;\n\n if (!hasToken) {\n // If the request does not have a token, skip the oAuth2 authentication\n // Necessary because the oAuth2 library will throw an error if the token is not present\n return next();\n }\n\n // Authenticate the request using OAuth2\n const oauthRequest = new OAuthRequest(req);\n\n const oauthResponse = new OAuthResponse(res);\n\n const oAuthToken = await req.oauth.authenticate(\n oauthRequest,\n oauthResponse,\n authenticateOptions\n );\n\n const user = await UserModel.findById(oAuthToken.user._id);\n\n if (user) {\n res.locals.user = user;\n res.locals.authType = 'oauth2';\n }\n\n const organization = await OrganizationModel.findById(\n oAuthToken.organization._id\n );\n\n if (organization) {\n res.locals.organization = organization;\n }\n\n const project = await ProjectModel.findById(oAuthToken.project._id);\n\n if (project) {\n res.locals.project = project;\n }\n } catch (err) {\n logger.info(err);\n }\n next();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,0BAAkC;AAClC,qBAA6B;AAC7B,kBAA0B;AAC1B,oBAAkD;AAElD,2BAGO;AAIP,MAAM,QAAQ,IAAI,qBAAAA,QAAa;AAAA,EAC7B,WAAO,4BAAa;AAAA,EACpB,qBAAqB,KAAK;AAAA;AAAA,EAC1B,gCAAgC;AAClC,CAAC;AAWM,MAAM,sBAAsB,OACjC,KACA,MACA,SACG;AAEH,EAAC,IAAqC,QAAQ;AAE9C,OAAK;AACP;AAGO,MAAM,qBAAqB,OAChC,KACA,KACA,SACkB;AAClB,MAAI;AACF,UAAM,WAAW,CAAC,CAAC,IAAI,QAAQ;AAE/B,QAAI,CAAC,UAAU;AAGb,aAAO,KAAK;AAAA,IACd;AAGA,UAAM,eAAe,IAAI,qBAAAC,QAAa,GAAG;AAEzC,UAAM,gBAAgB,IAAI,qBAAAC,SAAc,GAAG;AAE3C,UAAM,aAAa,MAAM,IAAI,MAAM;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,sBAAU,SAAS,WAAW,KAAK,GAAG;AAEzD,QAAI,MAAM;AACR,UAAI,OAAO,OAAO;AAClB,UAAI,OAAO,WAAW;AAAA,IACxB;AAEA,UAAM,eAAe,MAAM,sCAAkB;AAAA,MAC3C,WAAW,aAAa;AAAA,IAC1B;AAEA,QAAI,cAAc;AAChB,UAAI,OAAO,eAAe;AAAA,IAC5B;AAEA,UAAM,UAAU,MAAM,4BAAa,SAAS,WAAW,QAAQ,GAAG;AAElE,QAAI,SAAS;AACX,UAAI,OAAO,UAAU;AAAA,IACvB;AAAA,EACF,SAAS,KAAK;AACZ,yBAAO,KAAK,GAAG;AAAA,EACjB;AACA,OAAK;AACP;","names":["OAuth2Server","OAuthRequest","OAuthResponse"]}
1
+ {"version":3,"sources":["../../../src/middlewares/oAuth2.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { logger } from '@logger';\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport { UserModel } from '@models/user.model';\nimport { getAuthModel, authenticateOptions } from '@utils/oAuth2';\nimport { NextFunction, Request, Response } from 'express';\nimport OAuth2Server, {\n Request as OAuthRequest,\n Response as OAuthResponse,\n} from 'oauth2-server';\nimport { ResponseWithInformation } from './sessionAuth.middleware';\n\n// Configuration of the OAuth server\nconst oauth = new OAuth2Server({\n model: getAuthModel(),\n accessTokenLifetime: 60 * 60, // 1 hour\n allowBearerTokensInQueryString: true,\n});\n\nexport type RequestWithOAuth2Information<\n P = any,\n ResBody = any,\n ReqBody = any,\n ReqQuery = qs.ParsedQs,\n> = Request<P, ResBody, ReqBody, ReqQuery> & {\n oauth: OAuth2Server;\n};\n\nexport const attachOAuthInstance = async (\n req: Request,\n _res: Response,\n next: NextFunction\n) => {\n // Attach the instance OAuth to the requests\n (req as RequestWithOAuth2Information).oauth = oauth;\n\n next();\n};\n\n// Middleware to authenticate requests\nexport const authenticateOAuth2 = async (\n req: RequestWithOAuth2Information,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n try {\n const hasToken = !!req.headers.authorization;\n\n if (!hasToken) {\n // If the request does not have a token, skip the oAuth2 authentication\n // Necessary because the oAuth2 library will throw an error if the token is not present\n return next();\n }\n\n // Authenticate the request using OAuth2\n const oauthRequest = new OAuthRequest(req);\n\n const oauthResponse = new OAuthResponse(res);\n\n const oAuthToken = await req.oauth.authenticate(\n oauthRequest,\n oauthResponse,\n authenticateOptions\n );\n\n const {\n organization: organizationRights,\n project: projectRights,\n dictionary: dictionaryRights,\n } = oAuthToken.rights;\n\n res.locals.organizationRights = organizationRights;\n res.locals.isOrganizationAdmin = organizationRights?.admin ?? false;\n res.locals.projectRights = projectRights;\n res.locals.isProjectAdmin = projectRights?.admin ?? false;\n res.locals.dictionaryRights = dictionaryRights;\n\n const user = await UserModel.findById(oAuthToken.user._id);\n\n if (user) {\n res.locals.user = user;\n res.locals.authType = 'oauth2';\n }\n\n const organization = await OrganizationModel.findById(\n oAuthToken.organization._id\n );\n\n if (organization) {\n res.locals.organization = organization;\n }\n const project = await ProjectModel.findById(oAuthToken.project._id);\n\n if (project) {\n res.locals.project = project;\n }\n } catch (err) {\n logger.info(err);\n }\n next();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AACvB,0BAAkC;AAClC,qBAA6B;AAC7B,kBAA0B;AAC1B,oBAAkD;AAElD,2BAGO;AAIP,MAAM,QAAQ,IAAI,qBAAAA,QAAa;AAAA,EAC7B,WAAO,4BAAa;AAAA,EACpB,qBAAqB,KAAK;AAAA;AAAA,EAC1B,gCAAgC;AAClC,CAAC;AAWM,MAAM,sBAAsB,OACjC,KACA,MACA,SACG;AAEH,EAAC,IAAqC,QAAQ;AAE9C,OAAK;AACP;AAGO,MAAM,qBAAqB,OAChC,KACA,KACA,SACkB;AAClB,MAAI;AACF,UAAM,WAAW,CAAC,CAAC,IAAI,QAAQ;AAE/B,QAAI,CAAC,UAAU;AAGb,aAAO,KAAK;AAAA,IACd;AAGA,UAAM,eAAe,IAAI,qBAAAC,QAAa,GAAG;AAEzC,UAAM,gBAAgB,IAAI,qBAAAC,SAAc,GAAG;AAE3C,UAAM,aAAa,MAAM,IAAI,MAAM;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,cAAc;AAAA,MACd,SAAS;AAAA,MACT,YAAY;AAAA,IACd,IAAI,WAAW;AAEf,QAAI,OAAO,qBAAqB;AAChC,QAAI,OAAO,sBAAsB,oBAAoB,SAAS;AAC9D,QAAI,OAAO,gBAAgB;AAC3B,QAAI,OAAO,iBAAiB,eAAe,SAAS;AACpD,QAAI,OAAO,mBAAmB;AAE9B,UAAM,OAAO,MAAM,sBAAU,SAAS,WAAW,KAAK,GAAG;AAEzD,QAAI,MAAM;AACR,UAAI,OAAO,OAAO;AAClB,UAAI,OAAO,WAAW;AAAA,IACxB;AAEA,UAAM,eAAe,MAAM,sCAAkB;AAAA,MAC3C,WAAW,aAAa;AAAA,IAC1B;AAEA,QAAI,cAAc;AAChB,UAAI,OAAO,eAAe;AAAA,IAC5B;AACA,UAAM,UAAU,MAAM,4BAAa,SAAS,WAAW,QAAQ,GAAG;AAElE,QAAI,SAAS;AACX,UAAI,OAAO,UAAU;AAAA,IACvB;AAAA,EACF,SAAS,KAAK;AACZ,yBAAO,KAAK,GAAG;AAAA,EACjB;AACA,OAAK;AACP;","names":["OAuth2Server","OAuthRequest","OAuthResponse"]}
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var sessionAuth_middleware_exports = {};
30
30
  __export(sessionAuth_middleware_exports, {
31
- AuthInformationType: () => AuthInformationType,
31
+ checkAdmin: () => checkAdmin,
32
32
  checkOrganization: () => checkOrganization,
33
33
  checkProject: () => checkProject,
34
34
  checkUser: () => checkUser
@@ -40,20 +40,13 @@ var import_sessionAuth = require('./../services/sessionAuth.service.cjs');
40
40
  var import_user = require('./../services/user.service.cjs');
41
41
  var import_cookies = require('./../utils/cookies.cjs');
42
42
  var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
43
- var AuthInformationType = /* @__PURE__ */ ((AuthInformationType2) => {
44
- AuthInformationType2[AuthInformationType2["IsNull"] = 0] = "IsNull";
45
- AuthInformationType2[AuthInformationType2["IsDefined"] = 1] = "IsDefined";
46
- return AuthInformationType2;
47
- })(AuthInformationType || {});
48
43
  const checkUser = async (req, res, next) => {
49
44
  const { [import_cookies.Cookies.JWT_AUTH]: sessionToken } = req.cookies;
50
45
  res.locals.user = null;
51
46
  res.locals.authType = null;
52
47
  try {
53
48
  if (sessionToken) {
54
- const user = await (0, import_user.getUserBySession)(
55
- sessionToken
56
- );
49
+ const user = await (0, import_user.getUserBySession)(sessionToken);
57
50
  if (user) {
58
51
  res.locals.user = user.toObject();
59
52
  res.locals.authType = "session";
@@ -120,9 +113,56 @@ const checkProject = async (req, res, next) => {
120
113
  }
121
114
  return next();
122
115
  };
116
+ const checkAdmin = async (_req, res, next) => {
117
+ const { organization, project, user, authType } = res.locals;
118
+ if (authType !== "session") {
119
+ return next();
120
+ }
121
+ res.locals.organizationRights = {
122
+ read: true,
123
+ write: false,
124
+ admin: false
125
+ };
126
+ res.locals.projectRights = {
127
+ read: true,
128
+ write: false,
129
+ admin: false
130
+ };
131
+ res.locals.projectRights = {
132
+ read: true,
133
+ write: false,
134
+ admin: false
135
+ };
136
+ if (user) {
137
+ if (organization) {
138
+ const isOrganizationAdmin = organization.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
139
+ res.locals.isOrganizationAdmin = isOrganizationAdmin;
140
+ res.locals.organizationRights = {
141
+ read: true,
142
+ write: isOrganizationAdmin,
143
+ admin: isOrganizationAdmin
144
+ };
145
+ }
146
+ if (project) {
147
+ const isProjectAdmin = project.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
148
+ res.locals.isProjectAdmin = isProjectAdmin;
149
+ res.locals.projectRights = {
150
+ read: true,
151
+ write: isProjectAdmin,
152
+ admin: isProjectAdmin
153
+ };
154
+ res.locals.dictionaryRights = {
155
+ read: true,
156
+ write: true,
157
+ admin: true
158
+ };
159
+ }
160
+ }
161
+ return next();
162
+ };
123
163
  // Annotate the CommonJS export names for ESM import in node:
124
164
  0 && (module.exports = {
125
- AuthInformationType,
165
+ checkAdmin,
126
166
  checkOrganization,
127
167
  checkProject,
128
168
  checkUser
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/middlewares/sessionAuth.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport {\n clearOrganizationAuth,\n clearProjectAuth,\n} from '@services/sessionAuth.service';\nimport { getUserBySession as getUserBySessionService } from '@services/user.service';\nimport { Cookies } from '@utils/cookies';\nimport type { Request, Response, NextFunction } from 'express';\nimport jwt from 'jsonwebtoken';\nimport type {\n Organization,\n OrganizationDocument,\n} from '@/types/organization.types';\nimport type { Project, ProjectDocument } from '@/types/project.types';\nimport type { User, UserDocument } from '@/types/user.types';\n\nexport enum AuthInformationType {\n IsNull,\n IsDefined,\n}\n\nexport type ResponseWithInformation<ResBody = any> = Response<\n ResBody,\n {\n user: User | null;\n organization: Organization | null;\n isOrganizationAdmin: boolean | null;\n project: Project | null;\n isProjectAdmin: boolean | null;\n authType: 'session' | 'oauth2' | null;\n }\n>;\n\nexport const checkUser = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const { [Cookies.JWT_AUTH]: sessionToken } = req.cookies;\n\n res.locals.user = null;\n res.locals.authType = null;\n\n try {\n if (sessionToken) {\n const user: UserDocument | null = (await getUserBySessionService(\n sessionToken\n )) as UserDocument | null;\n\n if (user) {\n res.locals.user = user.toObject();\n res.locals.authType = 'session';\n }\n }\n } catch (error) {\n console.error('Error fetching session:', error);\n }\n\n return next();\n};\n\nexport const checkOrganization = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenOrganization = req.cookies[Cookies.JWT_ORGANIZATION];\n\n res.locals.organization = null;\n\n try {\n if (!jwtTokenOrganization || jwtTokenOrganization === 'undefined') {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organizationData = jwt.verify(\n jwtTokenOrganization,\n process.env.JWT_TOKEN_SECRET!\n ) as Organization;\n\n if (!organizationData) {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organization: OrganizationDocument | null =\n await OrganizationModel.findById(organizationData._id);\n\n if (!organization) {\n clearOrganizationAuth(res);\n return next();\n }\n\n res.locals.organization = organization.toObject();\n } catch (error) {\n console.error('Error fetching organization:', error);\n }\n\n return next();\n};\n\nexport const checkProject = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenProject = req.cookies[Cookies.JWT_PROJECT];\n res.locals.project = null;\n\n try {\n if (!jwtTokenProject || jwtTokenProject === 'undefined') {\n clearProjectAuth(res);\n return next();\n }\n\n const decodedTokenProject = jwt.verify(\n jwtTokenProject,\n process.env.JWT_TOKEN_SECRET!\n ) as Project;\n\n if (!decodedTokenProject) {\n clearProjectAuth(res);\n return next();\n }\n\n const project: ProjectDocument | null = await ProjectModel.findById(\n decodedTokenProject._id\n );\n\n if (\n !project ||\n !res.locals.organization ||\n String(project.organizationId) !== String(res.locals.organization._id)\n ) {\n clearProjectAuth(res);\n return next();\n }\n\n res.locals.project = project.toObject();\n } catch (error) {\n console.error('Error fetching project:', error);\n }\n\n return next();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAkC;AAClC,qBAA6B;AAC7B,yBAGO;AACP,kBAA4D;AAC5D,qBAAwB;AAExB,0BAAgB;AAQT,IAAK,sBAAL,kBAAKA,yBAAL;AACL,EAAAA,0CAAA;AACA,EAAAA,0CAAA;AAFU,SAAAA;AAAA,GAAA;AAiBL,MAAM,YAAY,OACvB,KACA,KACA,SACkB;AAClB,QAAM,EAAE,CAAC,uBAAQ,QAAQ,GAAG,aAAa,IAAI,IAAI;AAEjD,MAAI,OAAO,OAAO;AAClB,MAAI,OAAO,WAAW;AAEtB,MAAI;AACF,QAAI,cAAc;AAChB,YAAM,OAA6B,UAAM,YAAAC;AAAA,QACvC;AAAA,MACF;AAEA,UAAI,MAAM;AACR,YAAI,OAAO,OAAO,KAAK,SAAS;AAChC,YAAI,OAAO,WAAW;AAAA,MACxB;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAChD;AAEA,SAAO,KAAK;AACd;AAEO,MAAM,oBAAoB,OAC/B,KACA,KACA,SACkB;AAClB,QAAM,uBAAuB,IAAI,QAAQ,uBAAQ,gBAAgB;AAEjE,MAAI,OAAO,eAAe;AAE1B,MAAI;AACF,QAAI,CAAC,wBAAwB,yBAAyB,aAAa;AACjE,oDAAsB,GAAG;AACzB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,mBAAmB,oBAAAC,QAAI;AAAA,MAC3B;AAAA,MACA,QAAQ,IAAI;AAAA,IACd;AAEA,QAAI,CAAC,kBAAkB;AACrB,oDAAsB,GAAG;AACzB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,eACJ,MAAM,sCAAkB,SAAS,iBAAiB,GAAG;AAEvD,QAAI,CAAC,cAAc;AACjB,oDAAsB,GAAG;AACzB,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,OAAO,eAAe,aAAa,SAAS;AAAA,EAClD,SAAS,OAAO;AACd,YAAQ,MAAM,gCAAgC,KAAK;AAAA,EACrD;AAEA,SAAO,KAAK;AACd;AAEO,MAAM,eAAe,OAC1B,KACA,KACA,SACkB;AAClB,QAAM,kBAAkB,IAAI,QAAQ,uBAAQ,WAAW;AACvD,MAAI,OAAO,UAAU;AAErB,MAAI;AACF,QAAI,CAAC,mBAAmB,oBAAoB,aAAa;AACvD,+CAAiB,GAAG;AACpB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,sBAAsB,oBAAAA,QAAI;AAAA,MAC9B;AAAA,MACA,QAAQ,IAAI;AAAA,IACd;AAEA,QAAI,CAAC,qBAAqB;AACxB,+CAAiB,GAAG;AACpB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAkC,MAAM,4BAAa;AAAA,MACzD,oBAAoB;AAAA,IACtB;AAEA,QACE,CAAC,WACD,CAAC,IAAI,OAAO,gBACZ,OAAO,QAAQ,cAAc,MAAM,OAAO,IAAI,OAAO,aAAa,GAAG,GACrE;AACA,+CAAiB,GAAG;AACpB,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,OAAO,UAAU,QAAQ,SAAS;AAAA,EACxC,SAAS,OAAO;AACd,YAAQ,MAAM,2BAA2B,KAAK;AAAA,EAChD;AAEA,SAAO,KAAK;AACd;","names":["AuthInformationType","getUserBySessionService","jwt"]}
1
+ {"version":3,"sources":["../../../src/middlewares/sessionAuth.middleware.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { OrganizationModel } from '@models/organization.model';\nimport { ProjectModel } from '@models/project.model';\nimport {\n clearOrganizationAuth,\n clearProjectAuth,\n} from '@services/sessionAuth.service';\nimport { getUserBySession as getUserBySessionService } from '@services/user.service';\nimport { Cookies } from '@utils/cookies';\nimport type { Request, Response, NextFunction } from 'express';\nimport jwt from 'jsonwebtoken';\nimport type {\n Organization,\n OrganizationDocument,\n} from '@/types/organization.types';\nimport type { Project, ProjectDocument, Rights } from '@/types/project.types';\nimport type { User } from '@/types/user.types';\n\nexport type ResponseWithInformation<ResBody = any> = Response<\n ResBody,\n {\n user: User | null;\n // Auth Context\n organization: Organization | null;\n project: Project | null;\n authType: 'session' | 'oauth2' | null;\n // Auth Rights - oAuth2 Auth\n organizationRights: Rights | null;\n projectRights: Rights | null;\n dictionaryRights: Rights | null;\n // Auth Rights - Session Auth\n isOrganizationAdmin: boolean | null;\n isProjectAdmin: boolean | null;\n }\n>;\n\nexport const checkUser = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const { [Cookies.JWT_AUTH]: sessionToken } = req.cookies;\n\n res.locals.user = null;\n res.locals.authType = null;\n\n try {\n if (sessionToken) {\n const user = await getUserBySessionService(sessionToken);\n\n if (user) {\n res.locals.user = user.toObject();\n res.locals.authType = 'session';\n }\n }\n } catch (error) {\n console.error('Error fetching session:', error);\n }\n\n return next();\n};\n\nexport const checkOrganization = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenOrganization = req.cookies[Cookies.JWT_ORGANIZATION];\n\n res.locals.organization = null;\n\n try {\n if (!jwtTokenOrganization || jwtTokenOrganization === 'undefined') {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organizationData = jwt.verify(\n jwtTokenOrganization,\n process.env.JWT_TOKEN_SECRET!\n ) as Organization;\n\n if (!organizationData) {\n clearOrganizationAuth(res);\n return next();\n }\n\n const organization: OrganizationDocument | null =\n await OrganizationModel.findById(organizationData._id);\n\n if (!organization) {\n clearOrganizationAuth(res);\n return next();\n }\n\n res.locals.organization = organization.toObject();\n } catch (error) {\n console.error('Error fetching organization:', error);\n }\n\n return next();\n};\n\nexport const checkProject = async (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const jwtTokenProject = req.cookies[Cookies.JWT_PROJECT];\n res.locals.project = null;\n\n try {\n if (!jwtTokenProject || jwtTokenProject === 'undefined') {\n clearProjectAuth(res);\n return next();\n }\n\n const decodedTokenProject = jwt.verify(\n jwtTokenProject,\n process.env.JWT_TOKEN_SECRET!\n ) as Project;\n\n if (!decodedTokenProject) {\n clearProjectAuth(res);\n return next();\n }\n\n const project: ProjectDocument | null = await ProjectModel.findById(\n decodedTokenProject._id\n );\n\n if (\n !project ||\n !res.locals.organization ||\n String(project.organizationId) !== String(res.locals.organization._id)\n ) {\n clearProjectAuth(res);\n return next();\n }\n\n res.locals.project = project.toObject();\n } catch (error) {\n console.error('Error fetching project:', error);\n }\n\n return next();\n};\n\n/**\n * Middleware to check if the user is an admin of the organization or project\n * Sets the following properties in res.locals:\n * - isOrganizationAdmin: boolean\n * - isProjectAdmin: boolean\n */\nexport const checkAdmin = async (\n _req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): Promise<void> => {\n const { organization, project, user, authType } = res.locals;\n\n if (authType !== 'session') {\n return next();\n }\n\n res.locals.organizationRights = {\n read: true,\n write: false,\n admin: false,\n };\n res.locals.projectRights = {\n read: true,\n write: false,\n admin: false,\n };\n res.locals.projectRights = {\n read: true,\n write: false,\n admin: false,\n };\n\n if (user) {\n if (organization) {\n const isOrganizationAdmin: boolean =\n organization.adminsIds\n .map((id) => String(id))\n .includes(String(user._id)) ?? false;\n\n res.locals.isOrganizationAdmin = isOrganizationAdmin;\n\n res.locals.organizationRights = {\n read: true,\n write: isOrganizationAdmin,\n admin: isOrganizationAdmin,\n };\n }\n\n if (project) {\n const isProjectAdmin: boolean =\n project.adminsIds.map((id) => String(id)).includes(String(user._id)) ??\n false;\n\n res.locals.isProjectAdmin = isProjectAdmin;\n\n res.locals.projectRights = {\n read: true,\n write: isProjectAdmin,\n admin: isProjectAdmin,\n };\n\n res.locals.dictionaryRights = {\n read: true,\n write: true,\n admin: true,\n };\n }\n }\n\n return next();\n};\n"],"mappings":"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","names":["getUserBySessionService","jwt"]}
@@ -23,10 +23,9 @@ __export(dictionary_routes_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(dictionary_routes_exports);
25
25
  var import_dictionary = require('./../controllers/dictionary.controller.cjs');
26
- var import_accessControl = require('./../utils/accessControl.cjs');
27
26
  var import_express = require("express");
28
27
  const dictionaryRouter = (0, import_express.Router)();
29
- const baseURL = `${process.env.CLIENT_URL}/api/dictionary`;
28
+ const baseURL = `${process.env.BACKEND_URL}/api/dictionary`;
30
29
  const dictionaryRoutes = {
31
30
  getDictionaries: {
32
31
  urlModel: "/",
@@ -66,86 +65,27 @@ const dictionaryRoutes = {
66
65
  };
67
66
  dictionaryRouter.get(
68
67
  dictionaryRoutes.getDictionaries.urlModel,
69
- (0, import_accessControl.accessControlMiddleWare)(
70
- [
71
- import_accessControl.AccessRule.authenticated,
72
- import_accessControl.AccessRule.hasOrganization,
73
- import_accessControl.AccessRule.hasProject
74
- ],
75
- import_accessControl.AccessRule.admin
76
- ),
77
68
  import_dictionary.getDictionaries
78
69
  );
79
70
  dictionaryRouter.get(
80
71
  dictionaryRoutes.getDictionariesKeys.urlModel,
81
- (0, import_accessControl.accessControlMiddleWare)(
82
- [
83
- import_accessControl.AccessRule.authenticated,
84
- import_accessControl.AccessRule.hasOrganization,
85
- import_accessControl.AccessRule.hasProject
86
- ],
87
- import_accessControl.AccessRule.admin
88
- ),
89
72
  import_dictionary.getDictionariesKeys
90
73
  );
91
74
  dictionaryRouter.get(
92
75
  dictionaryRoutes.getDictionary.urlModel,
93
- (0, import_accessControl.accessControlMiddleWare)(
94
- [
95
- import_accessControl.AccessRule.authenticated,
96
- import_accessControl.AccessRule.hasOrganization,
97
- import_accessControl.AccessRule.hasProject
98
- ],
99
- import_accessControl.AccessRule.admin
100
- ),
101
76
  import_dictionary.getDictionaryByKey
102
77
  );
103
- dictionaryRouter.post(
104
- dictionaryRoutes.addDictionary.urlModel,
105
- (0, import_accessControl.accessControlMiddleWare)(
106
- [
107
- import_accessControl.AccessRule.authenticated,
108
- import_accessControl.AccessRule.hasOrganization,
109
- import_accessControl.AccessRule.hasProject
110
- ],
111
- import_accessControl.AccessRule.admin
112
- ),
113
- import_dictionary.addDictionary
114
- );
78
+ dictionaryRouter.post(dictionaryRoutes.addDictionary.urlModel, import_dictionary.addDictionary);
115
79
  dictionaryRouter.patch(
116
80
  dictionaryRoutes.pushDictionaries.urlModel,
117
- (0, import_accessControl.accessControlMiddleWare)(
118
- [
119
- import_accessControl.AccessRule.authenticated,
120
- import_accessControl.AccessRule.hasOrganization,
121
- import_accessControl.AccessRule.hasProject
122
- ],
123
- import_accessControl.AccessRule.admin
124
- ),
125
81
  import_dictionary.pushDictionaries
126
82
  );
127
83
  dictionaryRouter.put(
128
84
  dictionaryRoutes.updateDictionary.urlModel,
129
- (0, import_accessControl.accessControlMiddleWare)(
130
- [
131
- import_accessControl.AccessRule.authenticated,
132
- import_accessControl.AccessRule.hasOrganization,
133
- import_accessControl.AccessRule.hasProject
134
- ],
135
- import_accessControl.AccessRule.admin
136
- ),
137
85
  import_dictionary.updateDictionary
138
86
  );
139
87
  dictionaryRouter.delete(
140
88
  dictionaryRoutes.deleteDictionary.urlModel,
141
- (0, import_accessControl.accessControlMiddleWare)(
142
- [
143
- import_accessControl.AccessRule.authenticated,
144
- import_accessControl.AccessRule.hasOrganization,
145
- import_accessControl.AccessRule.hasProject
146
- ],
147
- import_accessControl.AccessRule.admin
148
- ),
149
89
  import_dictionary.deleteDictionary
150
90
  );
151
91
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import {\n pushDictionaries,\n addDictionary,\n deleteDictionary,\n getDictionaries,\n updateDictionary,\n getDictionaryByKey,\n getDictionariesKeys,\n} from '@controllers/dictionary.controller';\nimport { accessControlMiddleWare, AccessRule } from '@utils/accessControl';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const dictionaryRouter: Router = Router();\n\nconst baseURL = `${process.env.CLIENT_URL}/api/dictionary`;\n\nexport const dictionaryRoutes = {\n getDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n getDictionariesKeys: {\n urlModel: '/keys',\n url: `${baseURL}/keys`,\n method: 'GET',\n },\n getDictionary: {\n urlModel: '/:dictionaryKey',\n url: ({ dictionaryKey }: { dictionaryKey: string }) =>\n `${baseURL}/${dictionaryKey}`,\n method: 'GET',\n },\n addDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n pushDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'PATCH',\n },\n updateDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n deleteDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n} satisfies Routes;\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionaries.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n getDictionaries\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionariesKeys.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n getDictionariesKeys\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionary.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n getDictionaryByKey\n);\n\ndictionaryRouter.post(\n dictionaryRoutes.addDictionary.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n addDictionary\n);\ndictionaryRouter.patch(\n dictionaryRoutes.pushDictionaries.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n pushDictionaries\n);\ndictionaryRouter.put(\n dictionaryRoutes.updateDictionary.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n updateDictionary\n);\ndictionaryRouter.delete(\n dictionaryRoutes.deleteDictionary.urlModel,\n accessControlMiddleWare(\n [\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ],\n AccessRule.admin\n ),\n deleteDictionary\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQO;AACP,2BAAoD;AACpD,qBAAuB;AAGhB,MAAM,uBAA2B,uBAAO;AAE/C,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU;AAElC,MAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,cAAc,MACpB,GAAG,OAAO,IAAI,aAAa;AAAA,IAC7B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,gBAAgB;AAAA,MACjC;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,oBAAoB;AAAA,MACrC;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,cAAc;AAAA,MAC/B;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,cAAc;AAAA,MAC/B;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,MAClC;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,MAClC;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,MAClC;AAAA,IACE;AAAA,MACE,gCAAW;AAAA,MACX,gCAAW;AAAA,MACX,gCAAW;AAAA,IACb;AAAA,IACA,gCAAW;AAAA,EACb;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/dictionary.routes.ts"],"sourcesContent":["import {\n pushDictionaries,\n addDictionary,\n deleteDictionary,\n getDictionaries,\n updateDictionary,\n getDictionaryByKey,\n getDictionariesKeys,\n} from '@controllers/dictionary.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const dictionaryRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/dictionary`;\n\nexport const dictionaryRoutes = {\n getDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n getDictionariesKeys: {\n urlModel: '/keys',\n url: `${baseURL}/keys`,\n method: 'GET',\n },\n getDictionary: {\n urlModel: '/:dictionaryKey',\n url: ({ dictionaryKey }: { dictionaryKey: string }) =>\n `${baseURL}/${dictionaryKey}`,\n method: 'GET',\n },\n addDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n pushDictionaries: {\n urlModel: '/',\n url: baseURL,\n method: 'PATCH',\n },\n updateDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n deleteDictionary: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n} satisfies Routes;\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionaries.urlModel,\n getDictionaries\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionariesKeys.urlModel,\n getDictionariesKeys\n);\n\ndictionaryRouter.get(\n dictionaryRoutes.getDictionary.urlModel,\n getDictionaryByKey\n);\n\ndictionaryRouter.post(dictionaryRoutes.addDictionary.urlModel, addDictionary);\ndictionaryRouter.patch(\n dictionaryRoutes.pushDictionaries.urlModel,\n pushDictionaries\n);\ndictionaryRouter.put(\n dictionaryRoutes.updateDictionary.urlModel,\n updateDictionary\n);\ndictionaryRouter.delete(\n dictionaryRoutes.deleteDictionary.urlModel,\n deleteDictionary\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAQO;AACP,qBAAuB;AAGhB,MAAM,uBAA2B,uBAAO;AAE/C,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,cAAc,MACpB,GAAG,OAAO,IAAI,aAAa;AAAA,IAC7B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,gBAAgB;AAAA,EACjC;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,oBAAoB;AAAA,EACrC;AACF;AAEA,iBAAiB;AAAA,EACf,iBAAiB,cAAc;AAAA,EAC/B;AACF;AAEA,iBAAiB,KAAK,iBAAiB,cAAc,UAAU,+BAAa;AAC5E,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;AACA,iBAAiB;AAAA,EACf,iBAAiB,iBAAiB;AAAA,EAClC;AACF;","names":[]}
@@ -23,10 +23,9 @@ __export(organization_routes_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(organization_routes_exports);
25
25
  var import_organization = require('./../controllers/organization.controller.cjs');
26
- var import_accessControl = require('./../utils/accessControl.cjs');
27
26
  var import_express = require("express");
28
27
  const organizationRouter = (0, import_express.Router)();
29
- const baseURL = `${process.env.CLIENT_URL}/api/organization`;
28
+ const baseURL = `${process.env.BACKEND_URL}/api/organization`;
30
29
  const organizationRoutes = {
31
30
  getOrganizations: {
32
31
  urlModel: "/",
@@ -71,57 +70,34 @@ const organizationRoutes = {
71
70
  };
72
71
  organizationRouter.get(
73
72
  organizationRoutes.getOrganizations.urlModel,
74
- (0, import_accessControl.accessControlMiddleWare)(import_accessControl.AccessRule.authenticated),
75
73
  import_organization.getOrganizations
76
74
  );
77
75
  organizationRouter.post(
78
76
  organizationRoutes.addOrganization.urlModel,
79
- (0, import_accessControl.accessControlMiddleWare)(import_accessControl.AccessRule.authenticated),
80
77
  import_organization.addOrganization
81
78
  );
82
79
  organizationRouter.put(
83
80
  organizationRoutes.updateOrganization.urlModel,
84
- (0, import_accessControl.accessControlMiddleWare)([
85
- import_accessControl.AccessRule.authenticated,
86
- import_accessControl.AccessRule.hasOrganization
87
- ]),
88
81
  import_organization.updateOrganization
89
82
  );
90
83
  organizationRouter.put(
91
84
  organizationRoutes.updateOrganizationMembers.urlModel,
92
- (0, import_accessControl.accessControlMiddleWare)([
93
- import_accessControl.AccessRule.authenticated,
94
- import_accessControl.AccessRule.hasOrganization
95
- ]),
96
85
  import_organization.updateOrganizationMembers
97
86
  );
98
87
  organizationRouter.post(
99
88
  organizationRoutes.addOrganizationMember.urlModel,
100
- (0, import_accessControl.accessControlMiddleWare)([
101
- import_accessControl.AccessRule.authenticated,
102
- import_accessControl.AccessRule.hasOrganization
103
- ]),
104
89
  import_organization.addOrganizationMember
105
90
  );
106
91
  organizationRouter.delete(
107
92
  organizationRoutes.deleteOrganization.urlModel,
108
- (0, import_accessControl.accessControlMiddleWare)([
109
- import_accessControl.AccessRule.authenticated,
110
- import_accessControl.AccessRule.hasOrganization
111
- ]),
112
93
  import_organization.deleteOrganization
113
94
  );
114
95
  organizationRouter.put(
115
96
  organizationRoutes.selectOrganization.urlModel,
116
- (0, import_accessControl.accessControlMiddleWare)([import_accessControl.AccessRule.authenticated]),
117
97
  import_organization.selectOrganization
118
98
  );
119
99
  organizationRouter.post(
120
100
  organizationRoutes.unselectOrganization.urlModel,
121
- (0, import_accessControl.accessControlMiddleWare)([
122
- import_accessControl.AccessRule.authenticated,
123
- import_accessControl.AccessRule.hasOrganization
124
- ]),
125
101
  import_organization.unselectOrganization
126
102
  );
127
103
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n deleteOrganization,\n selectOrganization,\n getOrganizations,\n updateOrganization,\n updateOrganizationMembers,\n unselectOrganization,\n addOrganizationMember,\n} from '@controllers/organization.controller';\nimport { accessControlMiddleWare, AccessRule } from '@utils/accessControl';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const organizationRouter: Router = Router();\n\nconst baseURL = `${process.env.CLIENT_URL}/api/organization`;\n\nexport const organizationRoutes = {\n getOrganizations: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateOrganization: {\n urlModel: '/',\n url: baseURL,\n\n method: 'PUT',\n },\n updateOrganizationMembers: {\n urlModel: '/members',\n url: `${baseURL}/members`,\n method: 'PUT',\n },\n addOrganizationMember: {\n urlModel: '/member',\n url: `${baseURL}/member`,\n method: 'POST',\n },\n deleteOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectOrganization: {\n urlModel: '/:organizationId',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL}/${organizationId}`,\n method: 'PUT',\n },\n unselectOrganization: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n} satisfies Routes;\n\norganizationRouter.get(\n organizationRoutes.getOrganizations.urlModel,\n accessControlMiddleWare(AccessRule.authenticated),\n getOrganizations\n);\n\norganizationRouter.post(\n organizationRoutes.addOrganization.urlModel,\n accessControlMiddleWare(AccessRule.authenticated),\n addOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganization.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n updateOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganizationMembers.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n updateOrganizationMembers\n);\norganizationRouter.post(\n organizationRoutes.addOrganizationMember.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n addOrganizationMember\n);\norganizationRouter.delete(\n organizationRoutes.deleteOrganization.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n deleteOrganization\n);\norganizationRouter.put(\n organizationRoutes.selectOrganization.urlModel,\n accessControlMiddleWare([AccessRule.authenticated]),\n selectOrganization\n);\n\norganizationRouter.post(\n organizationRoutes.unselectOrganization.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n unselectOrganization\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASO;AACP,2BAAoD;AACpD,qBAAuB;AAGhB,MAAM,yBAA6B,uBAAO;AAEjD,MAAM,UAAU,GAAG,QAAQ,IAAI,UAAU;AAElC,MAAM,qBAAqB;AAAA,EAChC,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IAEL,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,eAAe,MACrB,GAAG,OAAO,IAAI,cAAc;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,iBAAiB;AAAA,MACpC,8CAAwB,gCAAW,aAAa;AAAA,EAChD;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,gBAAgB;AAAA,MACnC,8CAAwB,gCAAW,aAAa;AAAA,EAChD;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,MACtC,8CAAwB;AAAA,IACtB,gCAAW;AAAA,IACX,gCAAW;AAAA,EACb,CAAC;AAAA,EACD;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,0BAA0B;AAAA,MAC7C,8CAAwB;AAAA,IACtB,gCAAW;AAAA,IACX,gCAAW;AAAA,EACb,CAAC;AAAA,EACD;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,sBAAsB;AAAA,MACzC,8CAAwB;AAAA,IACtB,gCAAW;AAAA,IACX,gCAAW;AAAA,EACb,CAAC;AAAA,EACD;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,MACtC,8CAAwB;AAAA,IACtB,gCAAW;AAAA,IACX,gCAAW;AAAA,EACb,CAAC;AAAA,EACD;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,MACtC,8CAAwB,CAAC,gCAAW,aAAa,CAAC;AAAA,EAClD;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,qBAAqB;AAAA,MACxC,8CAAwB;AAAA,IACtB,gCAAW;AAAA,IACX,gCAAW;AAAA,EACb,CAAC;AAAA,EACD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/organization.routes.ts"],"sourcesContent":["import {\n addOrganization,\n deleteOrganization,\n selectOrganization,\n getOrganizations,\n updateOrganization,\n updateOrganizationMembers,\n unselectOrganization,\n addOrganizationMember,\n} from '@controllers/organization.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const organizationRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/organization`;\n\nexport const organizationRoutes = {\n getOrganizations: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateOrganization: {\n urlModel: '/',\n url: baseURL,\n\n method: 'PUT',\n },\n updateOrganizationMembers: {\n urlModel: '/members',\n url: `${baseURL}/members`,\n method: 'PUT',\n },\n addOrganizationMember: {\n urlModel: '/member',\n url: `${baseURL}/member`,\n method: 'POST',\n },\n deleteOrganization: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectOrganization: {\n urlModel: '/:organizationId',\n url: ({ organizationId }: { organizationId: string }) =>\n `${baseURL}/${organizationId}`,\n method: 'PUT',\n },\n unselectOrganization: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n} satisfies Routes;\n\norganizationRouter.get(\n organizationRoutes.getOrganizations.urlModel,\n getOrganizations\n);\n\norganizationRouter.post(\n organizationRoutes.addOrganization.urlModel,\n addOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganization.urlModel,\n updateOrganization\n);\norganizationRouter.put(\n organizationRoutes.updateOrganizationMembers.urlModel,\n updateOrganizationMembers\n);\norganizationRouter.post(\n organizationRoutes.addOrganizationMember.urlModel,\n addOrganizationMember\n);\norganizationRouter.delete(\n organizationRoutes.deleteOrganization.urlModel,\n deleteOrganization\n);\norganizationRouter.put(\n organizationRoutes.selectOrganization.urlModel,\n selectOrganization\n);\n\norganizationRouter.post(\n organizationRoutes.unselectOrganization.urlModel,\n unselectOrganization\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASO;AACP,qBAAuB;AAGhB,MAAM,yBAA6B,uBAAO;AAEjD,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,qBAAqB;AAAA,EAChC,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IAEL,QAAQ;AAAA,EACV;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,eAAe,MACrB,GAAG,OAAO,IAAI,cAAc;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,iBAAiB;AAAA,EACpC;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,gBAAgB;AAAA,EACnC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,0BAA0B;AAAA,EAC7C;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,sBAAsB;AAAA,EACzC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AACA,mBAAmB;AAAA,EACjB,mBAAmB,mBAAmB;AAAA,EACtC;AACF;AAEA,mBAAmB;AAAA,EACjB,mBAAmB,qBAAqB;AAAA,EACxC;AACF;","names":[]}
@@ -24,10 +24,9 @@ __export(project_routes_exports, {
24
24
  module.exports = __toCommonJS(project_routes_exports);
25
25
  var import_project = require('./../controllers/project.controller.cjs');
26
26
  var import_projectAccessKey = require('./../controllers/projectAccessKey.controller.cjs');
27
- var import_accessControl = require('./../utils/accessControl.cjs');
28
27
  var import_express = require("express");
29
28
  const projectRouter = (0, import_express.Router)();
30
- const baseURL = `${process.env.CLIENT_URL}/api/project`;
29
+ const baseURL = `${process.env.BACKEND_URL}/api/project`;
31
30
  const projectRoutes = {
32
31
  getProjects: {
33
32
  urlModel: "/",
@@ -80,93 +79,19 @@ const projectRoutes = {
80
79
  method: "DELETE"
81
80
  }
82
81
  };
83
- projectRouter.get(
84
- projectRoutes.getProjects.urlModel,
85
- (0, import_accessControl.accessControlMiddleWare)([
86
- import_accessControl.AccessRule.authenticated,
87
- import_accessControl.AccessRule.hasOrganization
88
- ]),
89
- import_project.getProjects
90
- );
91
- projectRouter.post(
92
- projectRoutes.addProject.urlModel,
93
- (0, import_accessControl.accessControlMiddleWare)([
94
- import_accessControl.AccessRule.authenticated,
95
- import_accessControl.AccessRule.hasOrganization
96
- ]),
97
- import_project.addProject
98
- );
99
- projectRouter.put(
100
- projectRoutes.updateProject.urlModel,
101
- (0, import_accessControl.accessControlMiddleWare)([
102
- import_accessControl.AccessRule.authenticated,
103
- import_accessControl.AccessRule.hasOrganization,
104
- import_accessControl.AccessRule.hasProject
105
- ]),
106
- import_project.updateProject
107
- );
82
+ projectRouter.get(projectRoutes.getProjects.urlModel, import_project.getProjects);
83
+ projectRouter.post(projectRoutes.addProject.urlModel, import_project.addProject);
84
+ projectRouter.put(projectRoutes.updateProject.urlModel, import_project.updateProject);
108
85
  projectRouter.put(
109
86
  projectRoutes.updateProjectMembers.urlModel,
110
- (0, import_accessControl.accessControlMiddleWare)([
111
- import_accessControl.AccessRule.authenticated,
112
- import_accessControl.AccessRule.hasOrganization,
113
- import_accessControl.AccessRule.hasProject
114
- ]),
115
87
  import_project.updateProjectMembers
116
88
  );
117
- projectRouter.delete(
118
- projectRoutes.deleteProject.urlModel,
119
- (0, import_accessControl.accessControlMiddleWare)([
120
- import_accessControl.AccessRule.authenticated,
121
- import_accessControl.AccessRule.hasOrganization,
122
- import_accessControl.AccessRule.hasProject
123
- ]),
124
- import_project.deleteProject
125
- );
126
- projectRouter.post(
127
- projectRoutes.addNewAccessKey.urlModel,
128
- (0, import_accessControl.accessControlMiddleWare)([
129
- import_accessControl.AccessRule.authenticated,
130
- import_accessControl.AccessRule.hasOrganization,
131
- import_accessControl.AccessRule.hasProject
132
- ]),
133
- import_projectAccessKey.addNewAccessKey
134
- );
135
- projectRouter.patch(
136
- projectRoutes.refreshAccessKey.urlModel,
137
- (0, import_accessControl.accessControlMiddleWare)([
138
- import_accessControl.AccessRule.authenticated,
139
- import_accessControl.AccessRule.hasOrganization,
140
- import_accessControl.AccessRule.hasProject
141
- ]),
142
- import_projectAccessKey.refreshAccessKey
143
- );
144
- projectRouter.delete(
145
- projectRoutes.deleteAccessKey.urlModel,
146
- (0, import_accessControl.accessControlMiddleWare)([
147
- import_accessControl.AccessRule.authenticated,
148
- import_accessControl.AccessRule.hasOrganization,
149
- import_accessControl.AccessRule.hasProject
150
- ]),
151
- import_projectAccessKey.deleteAccessKey
152
- );
153
- projectRouter.post(
154
- projectRoutes.unselectProject.urlModel,
155
- (0, import_accessControl.accessControlMiddleWare)([
156
- import_accessControl.AccessRule.authenticated,
157
- import_accessControl.AccessRule.hasOrganization,
158
- import_accessControl.AccessRule.hasProject
159
- ]),
160
- import_project.unselectProject
161
- );
162
- projectRouter.put(
163
- projectRoutes.selectProject.urlModel,
164
- (0, import_accessControl.accessControlMiddleWare)([
165
- import_accessControl.AccessRule.authenticated,
166
- import_accessControl.AccessRule.hasOrganization
167
- ]),
168
- import_project.selectProject
169
- );
89
+ projectRouter.delete(projectRoutes.deleteProject.urlModel, import_project.deleteProject);
90
+ projectRouter.post(projectRoutes.addNewAccessKey.urlModel, import_projectAccessKey.addNewAccessKey);
91
+ projectRouter.patch(projectRoutes.refreshAccessKey.urlModel, import_projectAccessKey.refreshAccessKey);
92
+ projectRouter.delete(projectRoutes.deleteAccessKey.urlModel, import_projectAccessKey.deleteAccessKey);
93
+ projectRouter.post(projectRoutes.unselectProject.urlModel, import_project.unselectProject);
94
+ projectRouter.put(projectRoutes.selectProject.urlModel, import_project.selectProject);
170
95
  // Annotate the CommonJS export names for ESM import in node:
171
96
  0 && (module.exports = {
172
97
  projectRouter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n updateProject,\n selectProject,\n unselectProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport { accessControlMiddleWare, AccessRule } from '@utils/accessControl';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const projectRouter: Router = Router();\n\nconst baseURL = `${process.env.CLIENT_URL}/api/project`;\n\nexport const projectRoutes = {\n getProjects: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addProject: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateProject: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n updateProjectMembers: {\n urlModel: '/members',\n url: `${process.env.CLIENT_URL}/api/members`,\n method: 'PUT',\n },\n deleteProject: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectProject: {\n urlModel: '/:projectId',\n url: ({ projectId }: { projectId: string }) => `${baseURL}/${projectId}`,\n method: 'PUT',\n },\n unselectProject: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n addNewAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'POST',\n },\n refreshAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'PATCH',\n },\n deleteAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'DELETE',\n },\n} satisfies Routes;\n\nprojectRouter.get(\n projectRoutes.getProjects.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n getProjects\n);\n\nprojectRouter.post(\n projectRoutes.addProject.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n addProject\n);\nprojectRouter.put(\n projectRoutes.updateProject.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n updateProject\n);\nprojectRouter.put(\n projectRoutes.updateProjectMembers.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n updateProjectMembers\n);\nprojectRouter.delete(\n projectRoutes.deleteProject.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n deleteProject\n);\n\nprojectRouter.post(\n projectRoutes.addNewAccessKey.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n addNewAccessKey\n);\n\nprojectRouter.patch(\n projectRoutes.refreshAccessKey.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n refreshAccessKey\n);\n\nprojectRouter.delete(\n projectRoutes.deleteAccessKey.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n deleteAccessKey\n);\n\nprojectRouter.post(\n projectRoutes.unselectProject.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n AccessRule.hasProject,\n ]),\n unselectProject\n);\n\nprojectRouter.put(\n projectRoutes.selectProject.urlModel,\n accessControlMiddleWare([\n AccessRule.authenticated,\n AccessRule.hasOrganization,\n ]),\n selectProject\n);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/routes/project.routes.ts"],"sourcesContent":["import {\n addProject,\n deleteProject,\n getProjects,\n updateProject,\n selectProject,\n unselectProject,\n updateProjectMembers,\n} from '@controllers/project.controller';\nimport {\n addNewAccessKey,\n deleteAccessKey,\n refreshAccessKey,\n} from '@controllers/projectAccessKey.controller';\nimport { Router } from 'express';\nimport { Routes } from '@/types/Routes';\n\nexport const projectRouter: Router = Router();\n\nconst baseURL = `${process.env.BACKEND_URL}/api/project`;\n\nexport const projectRoutes = {\n getProjects: {\n urlModel: '/',\n url: baseURL,\n method: 'GET',\n },\n addProject: {\n urlModel: '/',\n url: baseURL,\n method: 'POST',\n },\n updateProject: {\n urlModel: '/',\n url: baseURL,\n method: 'PUT',\n },\n updateProjectMembers: {\n urlModel: '/members',\n url: `${process.env.CLIENT_URL}/api/members`,\n method: 'PUT',\n },\n deleteProject: {\n urlModel: '/',\n url: baseURL,\n method: 'DELETE',\n },\n selectProject: {\n urlModel: '/:projectId',\n url: ({ projectId }: { projectId: string }) => `${baseURL}/${projectId}`,\n method: 'PUT',\n },\n unselectProject: {\n urlModel: '/logout',\n url: `${baseURL}/logout`,\n method: 'POST',\n },\n addNewAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'POST',\n },\n refreshAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'PATCH',\n },\n deleteAccessKey: {\n urlModel: '/access_key',\n url: `${baseURL}/access_key`,\n method: 'DELETE',\n },\n} satisfies Routes;\n\nprojectRouter.get(projectRoutes.getProjects.urlModel, getProjects);\n\nprojectRouter.post(projectRoutes.addProject.urlModel, addProject);\nprojectRouter.put(projectRoutes.updateProject.urlModel, updateProject);\nprojectRouter.put(\n projectRoutes.updateProjectMembers.urlModel,\n updateProjectMembers\n);\nprojectRouter.delete(projectRoutes.deleteProject.urlModel, deleteProject);\n\nprojectRouter.post(projectRoutes.addNewAccessKey.urlModel, addNewAccessKey);\n\nprojectRouter.patch(projectRoutes.refreshAccessKey.urlModel, refreshAccessKey);\n\nprojectRouter.delete(projectRoutes.deleteAccessKey.urlModel, deleteAccessKey);\n\nprojectRouter.post(projectRoutes.unselectProject.urlModel, unselectProject);\n\nprojectRouter.put(projectRoutes.selectProject.urlModel, selectProject);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQO;AACP,8BAIO;AACP,qBAAuB;AAGhB,MAAM,oBAAwB,uBAAO;AAE5C,MAAM,UAAU,GAAG,QAAQ,IAAI,WAAW;AAEnC,MAAM,gBAAgB;AAAA,EAC3B,aAAa;AAAA,IACX,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,YAAY;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,KAAK,GAAG,QAAQ,IAAI,UAAU;AAAA,IAC9B,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,UAAU,MAA6B,GAAG,OAAO,IAAI,SAAS;AAAA,IACtE,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,KAAK,GAAG,OAAO;AAAA,IACf,QAAQ;AAAA,EACV;AACF;AAEA,cAAc,IAAI,cAAc,YAAY,UAAU,0BAAW;AAEjE,cAAc,KAAK,cAAc,WAAW,UAAU,yBAAU;AAChE,cAAc,IAAI,cAAc,cAAc,UAAU,4BAAa;AACrE,cAAc;AAAA,EACZ,cAAc,qBAAqB;AAAA,EACnC;AACF;AACA,cAAc,OAAO,cAAc,cAAc,UAAU,4BAAa;AAExE,cAAc,KAAK,cAAc,gBAAgB,UAAU,uCAAe;AAE1E,cAAc,MAAM,cAAc,iBAAiB,UAAU,wCAAgB;AAE7E,cAAc,OAAO,cAAc,gBAAgB,UAAU,uCAAe;AAE5E,cAAc,KAAK,cAAc,gBAAgB,UAAU,8BAAe;AAE1E,cAAc,IAAI,cAAc,cAAc,UAAU,4BAAa;","names":[]}