@intlayer/backend 3.0.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 (464) hide show
  1. package/LICENSE +202 -0
  2. package/dist/cjs/controllers/dictionary.controller.cjs +356 -0
  3. package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -0
  4. package/dist/cjs/controllers/oAuth2.controller.cjs +46 -0
  5. package/dist/cjs/controllers/oAuth2.controller.cjs.map +1 -0
  6. package/dist/cjs/controllers/organization.controller.cjs +354 -0
  7. package/dist/cjs/controllers/organization.controller.cjs.map +1 -0
  8. package/dist/cjs/controllers/project.controller.cjs +298 -0
  9. package/dist/cjs/controllers/project.controller.cjs.map +1 -0
  10. package/dist/cjs/controllers/projectAccessKey.controller.cjs +134 -0
  11. package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -0
  12. package/dist/cjs/controllers/sessionAuth.controller.cjs +616 -0
  13. package/dist/cjs/controllers/sessionAuth.controller.cjs.map +1 -0
  14. package/dist/cjs/controllers/user.controller.cjs +197 -0
  15. package/dist/cjs/controllers/user.controller.cjs.map +1 -0
  16. package/dist/cjs/emails/InviteUserEmail.cjs +297 -0
  17. package/dist/cjs/emails/InviteUserEmail.cjs.map +1 -0
  18. package/dist/cjs/emails/PasswordChangeConfirmation.cjs +148 -0
  19. package/dist/cjs/emails/PasswordChangeConfirmation.cjs.map +1 -0
  20. package/dist/cjs/emails/ResetUserPassword.cjs +209 -0
  21. package/dist/cjs/emails/ResetUserPassword.cjs.map +1 -0
  22. package/dist/cjs/emails/ValidateUserEmail.cjs +230 -0
  23. package/dist/cjs/emails/ValidateUserEmail.cjs.map +1 -0
  24. package/dist/cjs/emails/Welcome.cjs +185 -0
  25. package/dist/cjs/emails/Welcome.cjs.map +1 -0
  26. package/dist/cjs/emails/index.cjs +31 -0
  27. package/dist/cjs/emails/index.cjs.map +1 -0
  28. package/dist/cjs/export.cjs +46 -0
  29. package/dist/cjs/export.cjs.map +1 -0
  30. package/dist/cjs/index.cjs +122 -0
  31. package/dist/cjs/index.cjs.map +1 -0
  32. package/dist/cjs/logger/index.cjs +53 -0
  33. package/dist/cjs/logger/index.cjs.map +1 -0
  34. package/dist/cjs/middlewares/admin.middleware.cjs +44 -0
  35. package/dist/cjs/middlewares/admin.middleware.cjs.map +1 -0
  36. package/dist/cjs/middlewares/oAuth2.middleware.cjs +89 -0
  37. package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -0
  38. package/dist/cjs/middlewares/request.middleware.cjs +41 -0
  39. package/dist/cjs/middlewares/request.middleware.cjs.map +1 -0
  40. package/dist/cjs/middlewares/sessionAuth.middleware.cjs +130 -0
  41. package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -0
  42. package/dist/cjs/models/dictionary.model.cjs +34 -0
  43. package/dist/cjs/models/dictionary.model.cjs.map +1 -0
  44. package/dist/cjs/models/oAuth2.model.cjs +31 -0
  45. package/dist/cjs/models/oAuth2.model.cjs.map +1 -0
  46. package/dist/cjs/models/organization.model.cjs +34 -0
  47. package/dist/cjs/models/organization.model.cjs.map +1 -0
  48. package/dist/cjs/models/project.model.cjs +31 -0
  49. package/dist/cjs/models/project.model.cjs.map +1 -0
  50. package/dist/cjs/models/user.model.cjs +31 -0
  51. package/dist/cjs/models/user.model.cjs.map +1 -0
  52. package/dist/cjs/routes/dictionary.routes.cjs +156 -0
  53. package/dist/cjs/routes/dictionary.routes.cjs.map +1 -0
  54. package/dist/cjs/routes/organization.routes.cjs +132 -0
  55. package/dist/cjs/routes/organization.routes.cjs.map +1 -0
  56. package/dist/cjs/routes/project.routes.cjs +175 -0
  57. package/dist/cjs/routes/project.routes.cjs.map +1 -0
  58. package/dist/cjs/routes/sessionAuth.routes.cjs +147 -0
  59. package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -0
  60. package/dist/cjs/routes/user.routes.cjs +96 -0
  61. package/dist/cjs/routes/user.routes.cjs.map +1 -0
  62. package/dist/cjs/schemas/dictionary.schema.cjs +69 -0
  63. package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -0
  64. package/dist/cjs/schemas/oAuth2.schema.cjs +55 -0
  65. package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -0
  66. package/dist/cjs/schemas/organization.schema.cjs +60 -0
  67. package/dist/cjs/schemas/organization.schema.cjs.map +1 -0
  68. package/dist/cjs/schemas/project.schema.cjs +79 -0
  69. package/dist/cjs/schemas/project.schema.cjs.map +1 -0
  70. package/dist/cjs/schemas/user.schema.cjs +112 -0
  71. package/dist/cjs/schemas/user.schema.cjs.map +1 -0
  72. package/dist/cjs/services/dictionary.service.cjs +166 -0
  73. package/dist/cjs/services/dictionary.service.cjs.map +1 -0
  74. package/dist/cjs/services/email.service.cjs +118 -0
  75. package/dist/cjs/services/email.service.cjs.map +1 -0
  76. package/dist/cjs/services/oAuth2.service.cjs +182 -0
  77. package/dist/cjs/services/oAuth2.service.cjs.map +1 -0
  78. package/dist/cjs/services/organization.service.cjs +95 -0
  79. package/dist/cjs/services/organization.service.cjs.map +1 -0
  80. package/dist/cjs/services/project.service.cjs +87 -0
  81. package/dist/cjs/services/project.service.cjs.map +1 -0
  82. package/dist/cjs/services/projectAccessKey.service.cjs +139 -0
  83. package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -0
  84. package/dist/cjs/services/sessionAuth.service.cjs +386 -0
  85. package/dist/cjs/services/sessionAuth.service.cjs.map +1 -0
  86. package/dist/cjs/services/user.service.cjs +155 -0
  87. package/dist/cjs/services/user.service.cjs.map +1 -0
  88. package/dist/cjs/types/Routes.cjs +17 -0
  89. package/dist/cjs/types/Routes.cjs.map +1 -0
  90. package/dist/cjs/types/dictionary.types.cjs +17 -0
  91. package/dist/cjs/types/dictionary.types.cjs.map +1 -0
  92. package/dist/cjs/types/organization.types.cjs +17 -0
  93. package/dist/cjs/types/organization.types.cjs.map +1 -0
  94. package/dist/cjs/types/project.types.cjs +17 -0
  95. package/dist/cjs/types/project.types.cjs.map +1 -0
  96. package/dist/cjs/types/session.types.cjs +17 -0
  97. package/dist/cjs/types/session.types.cjs.map +1 -0
  98. package/dist/cjs/types/user.types.cjs +17 -0
  99. package/dist/cjs/types/user.types.cjs.map +1 -0
  100. package/dist/cjs/utils/CSRF.cjs +47 -0
  101. package/dist/cjs/utils/CSRF.cjs.map +1 -0
  102. package/dist/cjs/utils/accessControl.cjs +121 -0
  103. package/dist/cjs/utils/accessControl.cjs.map +1 -0
  104. package/dist/cjs/utils/cookies.cjs +59 -0
  105. package/dist/cjs/utils/cookies.cjs.map +1 -0
  106. package/dist/cjs/utils/errors/ErrorHandler.cjs +103 -0
  107. package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -0
  108. package/dist/cjs/utils/errors/ErrorsClass.cjs +65 -0
  109. package/dist/cjs/utils/errors/ErrorsClass.cjs.map +1 -0
  110. package/dist/cjs/utils/errors/errorCodes.cjs +837 -0
  111. package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -0
  112. package/dist/cjs/utils/errors/index.cjs +37 -0
  113. package/dist/cjs/utils/errors/index.cjs.map +1 -0
  114. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs +55 -0
  115. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs.map +1 -0
  116. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs +65 -0
  117. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs.map +1 -0
  118. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs +55 -0
  119. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -0
  120. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs +58 -0
  121. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -0
  122. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +52 -0
  123. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -0
  124. package/dist/cjs/utils/httpStatusCodes.cjs +93 -0
  125. package/dist/cjs/utils/httpStatusCodes.cjs.map +1 -0
  126. package/dist/cjs/utils/mapper/dictionary.cjs +40 -0
  127. package/dist/cjs/utils/mapper/dictionary.cjs.map +1 -0
  128. package/dist/cjs/utils/mapper/organization.cjs +39 -0
  129. package/dist/cjs/utils/mapper/organization.cjs.map +1 -0
  130. package/dist/cjs/utils/mapper/project.cjs +39 -0
  131. package/dist/cjs/utils/mapper/project.cjs.map +1 -0
  132. package/dist/cjs/utils/mapper/user.cjs +39 -0
  133. package/dist/cjs/utils/mapper/user.cjs.map +1 -0
  134. package/dist/cjs/utils/mongoDB/connectDB.cjs +53 -0
  135. package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -0
  136. package/dist/cjs/utils/oAuth2.cjs +50 -0
  137. package/dist/cjs/utils/oAuth2.cjs.map +1 -0
  138. package/dist/cjs/utils/responseData.cjs +66 -0
  139. package/dist/cjs/utils/responseData.cjs.map +1 -0
  140. package/dist/cjs/utils/validation/validateArray.cjs +57 -0
  141. package/dist/cjs/utils/validation/validateArray.cjs.map +1 -0
  142. package/dist/cjs/utils/validation/validateDictionary.cjs +66 -0
  143. package/dist/cjs/utils/validation/validateDictionary.cjs.map +1 -0
  144. package/dist/cjs/utils/validation/validateEmail.cjs +37 -0
  145. package/dist/cjs/utils/validation/validateEmail.cjs.map +1 -0
  146. package/dist/cjs/utils/validation/validateOrganization.cjs +79 -0
  147. package/dist/cjs/utils/validation/validateOrganization.cjs.map +1 -0
  148. package/dist/cjs/utils/validation/validatePhone.cjs +37 -0
  149. package/dist/cjs/utils/validation/validatePhone.cjs.map +1 -0
  150. package/dist/cjs/utils/validation/validateProject.cjs +97 -0
  151. package/dist/cjs/utils/validation/validateProject.cjs.map +1 -0
  152. package/dist/cjs/utils/validation/validateString.cjs +39 -0
  153. package/dist/cjs/utils/validation/validateString.cjs.map +1 -0
  154. package/dist/cjs/utils/validation/validateUser.cjs +73 -0
  155. package/dist/cjs/utils/validation/validateUser.cjs.map +1 -0
  156. package/dist/esm/controllers/dictionary.controller.mjs +321 -0
  157. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -0
  158. package/dist/esm/controllers/oAuth2.controller.mjs +25 -0
  159. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -0
  160. package/dist/esm/controllers/organization.controller.mjs +317 -0
  161. package/dist/esm/controllers/organization.controller.mjs.map +1 -0
  162. package/dist/esm/controllers/project.controller.mjs +263 -0
  163. package/dist/esm/controllers/project.controller.mjs.map +1 -0
  164. package/dist/esm/controllers/projectAccessKey.controller.mjs +98 -0
  165. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -0
  166. package/dist/esm/controllers/sessionAuth.controller.mjs +570 -0
  167. package/dist/esm/controllers/sessionAuth.controller.mjs.map +1 -0
  168. package/dist/esm/controllers/user.controller.mjs +160 -0
  169. package/dist/esm/controllers/user.controller.mjs.map +1 -0
  170. package/dist/esm/emails/InviteUserEmail.mjs +285 -0
  171. package/dist/esm/emails/InviteUserEmail.mjs.map +1 -0
  172. package/dist/esm/emails/PasswordChangeConfirmation.mjs +134 -0
  173. package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -0
  174. package/dist/esm/emails/ResetUserPassword.mjs +197 -0
  175. package/dist/esm/emails/ResetUserPassword.mjs.map +1 -0
  176. package/dist/esm/emails/ValidateUserEmail.mjs +218 -0
  177. package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -0
  178. package/dist/esm/emails/Welcome.mjs +173 -0
  179. package/dist/esm/emails/Welcome.mjs.map +1 -0
  180. package/dist/esm/emails/index.mjs +6 -0
  181. package/dist/esm/emails/index.mjs.map +1 -0
  182. package/dist/esm/export.mjs +15 -0
  183. package/dist/esm/export.mjs.map +1 -0
  184. package/dist/esm/index.mjs +102 -0
  185. package/dist/esm/index.mjs.map +1 -0
  186. package/dist/esm/logger/index.mjs +29 -0
  187. package/dist/esm/logger/index.mjs.map +1 -0
  188. package/dist/esm/middlewares/admin.middleware.mjs +20 -0
  189. package/dist/esm/middlewares/admin.middleware.mjs.map +1 -0
  190. package/dist/esm/middlewares/oAuth2.middleware.mjs +57 -0
  191. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -0
  192. package/dist/esm/middlewares/request.middleware.mjs +17 -0
  193. package/dist/esm/middlewares/request.middleware.mjs.map +1 -0
  194. package/dist/esm/middlewares/sessionAuth.middleware.mjs +96 -0
  195. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -0
  196. package/dist/esm/models/dictionary.model.mjs +10 -0
  197. package/dist/esm/models/dictionary.model.mjs.map +1 -0
  198. package/dist/esm/models/oAuth2.model.mjs +7 -0
  199. package/dist/esm/models/oAuth2.model.mjs.map +1 -0
  200. package/dist/esm/models/organization.model.mjs +10 -0
  201. package/dist/esm/models/organization.model.mjs.map +1 -0
  202. package/dist/esm/models/project.model.mjs +7 -0
  203. package/dist/esm/models/project.model.mjs.map +1 -0
  204. package/dist/esm/models/user.model.mjs +7 -0
  205. package/dist/esm/models/user.model.mjs.map +1 -0
  206. package/dist/esm/routes/dictionary.routes.mjs +139 -0
  207. package/dist/esm/routes/dictionary.routes.mjs.map +1 -0
  208. package/dist/esm/routes/organization.routes.mjs +116 -0
  209. package/dist/esm/routes/organization.routes.mjs.map +1 -0
  210. package/dist/esm/routes/project.routes.mjs +162 -0
  211. package/dist/esm/routes/project.routes.mjs.map +1 -0
  212. package/dist/esm/routes/sessionAuth.routes.mjs +134 -0
  213. package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -0
  214. package/dist/esm/routes/user.routes.mjs +78 -0
  215. package/dist/esm/routes/user.routes.mjs.map +1 -0
  216. package/dist/esm/schemas/dictionary.schema.mjs +45 -0
  217. package/dist/esm/schemas/dictionary.schema.mjs.map +1 -0
  218. package/dist/esm/schemas/oAuth2.schema.mjs +31 -0
  219. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -0
  220. package/dist/esm/schemas/organization.schema.mjs +40 -0
  221. package/dist/esm/schemas/organization.schema.mjs.map +1 -0
  222. package/dist/esm/schemas/project.schema.mjs +59 -0
  223. package/dist/esm/schemas/project.schema.mjs.map +1 -0
  224. package/dist/esm/schemas/user.schema.mjs +81 -0
  225. package/dist/esm/schemas/user.schema.mjs.map +1 -0
  226. package/dist/esm/services/dictionary.service.mjs +134 -0
  227. package/dist/esm/services/dictionary.service.mjs.map +1 -0
  228. package/dist/esm/services/email.service.mjs +114 -0
  229. package/dist/esm/services/email.service.mjs.map +1 -0
  230. package/dist/esm/services/oAuth2.service.mjs +150 -0
  231. package/dist/esm/services/oAuth2.service.mjs.map +1 -0
  232. package/dist/esm/services/organization.service.mjs +68 -0
  233. package/dist/esm/services/organization.service.mjs.map +1 -0
  234. package/dist/esm/services/project.service.mjs +60 -0
  235. package/dist/esm/services/project.service.mjs.map +1 -0
  236. package/dist/esm/services/projectAccessKey.service.mjs +113 -0
  237. package/dist/esm/services/projectAccessKey.service.mjs.map +1 -0
  238. package/dist/esm/services/sessionAuth.service.mjs +337 -0
  239. package/dist/esm/services/sessionAuth.service.mjs.map +1 -0
  240. package/dist/esm/services/user.service.mjs +122 -0
  241. package/dist/esm/services/user.service.mjs.map +1 -0
  242. package/dist/esm/types/Routes.mjs +1 -0
  243. package/dist/esm/types/Routes.mjs.map +1 -0
  244. package/dist/esm/types/dictionary.types.mjs +1 -0
  245. package/dist/esm/types/dictionary.types.mjs.map +1 -0
  246. package/dist/esm/types/organization.types.mjs +1 -0
  247. package/dist/esm/types/organization.types.mjs.map +1 -0
  248. package/dist/esm/types/project.types.mjs +1 -0
  249. package/dist/esm/types/project.types.mjs.map +1 -0
  250. package/dist/esm/types/session.types.mjs +1 -0
  251. package/dist/esm/types/session.types.mjs.map +1 -0
  252. package/dist/esm/types/user.types.mjs +1 -0
  253. package/dist/esm/types/user.types.mjs.map +1 -0
  254. package/dist/esm/utils/CSRF.mjs +21 -0
  255. package/dist/esm/utils/CSRF.mjs.map +1 -0
  256. package/dist/esm/utils/accessControl.mjs +95 -0
  257. package/dist/esm/utils/accessControl.mjs.map +1 -0
  258. package/dist/esm/utils/cookies.mjs +32 -0
  259. package/dist/esm/utils/cookies.mjs.map +1 -0
  260. package/dist/esm/utils/errors/ErrorHandler.mjs +79 -0
  261. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -0
  262. package/dist/esm/utils/errors/ErrorsClass.mjs +40 -0
  263. package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -0
  264. package/dist/esm/utils/errors/errorCodes.mjs +813 -0
  265. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -0
  266. package/dist/esm/utils/errors/index.mjs +10 -0
  267. package/dist/esm/utils/errors/index.mjs.map +1 -0
  268. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs +33 -0
  269. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -0
  270. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs +41 -0
  271. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -0
  272. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs +33 -0
  273. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -0
  274. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs +36 -0
  275. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -0
  276. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +30 -0
  277. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -0
  278. package/dist/esm/utils/httpStatusCodes.mjs +69 -0
  279. package/dist/esm/utils/httpStatusCodes.mjs.map +1 -0
  280. package/dist/esm/utils/mapper/dictionary.mjs +16 -0
  281. package/dist/esm/utils/mapper/dictionary.mjs.map +1 -0
  282. package/dist/esm/utils/mapper/organization.mjs +15 -0
  283. package/dist/esm/utils/mapper/organization.mjs.map +1 -0
  284. package/dist/esm/utils/mapper/project.mjs +15 -0
  285. package/dist/esm/utils/mapper/project.mjs.map +1 -0
  286. package/dist/esm/utils/mapper/user.mjs +14 -0
  287. package/dist/esm/utils/mapper/user.mjs.map +1 -0
  288. package/dist/esm/utils/mongoDB/connectDB.mjs +19 -0
  289. package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -0
  290. package/dist/esm/utils/oAuth2.mjs +29 -0
  291. package/dist/esm/utils/oAuth2.mjs.map +1 -0
  292. package/dist/esm/utils/responseData.mjs +41 -0
  293. package/dist/esm/utils/responseData.mjs.map +1 -0
  294. package/dist/esm/utils/validation/validateArray.mjs +33 -0
  295. package/dist/esm/utils/validation/validateArray.mjs.map +1 -0
  296. package/dist/esm/utils/validation/validateDictionary.mjs +42 -0
  297. package/dist/esm/utils/validation/validateDictionary.mjs.map +1 -0
  298. package/dist/esm/utils/validation/validateEmail.mjs +13 -0
  299. package/dist/esm/utils/validation/validateEmail.mjs.map +1 -0
  300. package/dist/esm/utils/validation/validateOrganization.mjs +52 -0
  301. package/dist/esm/utils/validation/validateOrganization.mjs.map +1 -0
  302. package/dist/esm/utils/validation/validatePhone.mjs +13 -0
  303. package/dist/esm/utils/validation/validatePhone.mjs.map +1 -0
  304. package/dist/esm/utils/validation/validateProject.mjs +70 -0
  305. package/dist/esm/utils/validation/validateProject.mjs.map +1 -0
  306. package/dist/esm/utils/validation/validateString.mjs +15 -0
  307. package/dist/esm/utils/validation/validateString.mjs.map +1 -0
  308. package/dist/esm/utils/validation/validateUser.mjs +47 -0
  309. package/dist/esm/utils/validation/validateUser.mjs.map +1 -0
  310. package/dist/types/controllers/dictionary.controller.d.ts +70 -0
  311. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -0
  312. package/dist/types/controllers/oAuth2.controller.d.ts +14 -0
  313. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -0
  314. package/dist/types/controllers/organization.controller.d.ts +72 -0
  315. package/dist/types/controllers/organization.controller.d.ts.map +1 -0
  316. package/dist/types/controllers/project.controller.d.ts +59 -0
  317. package/dist/types/controllers/project.controller.d.ts.map +1 -0
  318. package/dist/types/controllers/projectAccessKey.controller.d.ts +27 -0
  319. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -0
  320. package/dist/types/controllers/sessionAuth.controller.d.ts +120 -0
  321. package/dist/types/controllers/sessionAuth.controller.d.ts.map +1 -0
  322. package/dist/types/controllers/user.controller.d.ts +56 -0
  323. package/dist/types/controllers/user.controller.d.ts.map +1 -0
  324. package/dist/types/emails/InviteUserEmail.d.ts +22 -0
  325. package/dist/types/emails/InviteUserEmail.d.ts.map +1 -0
  326. package/dist/types/emails/PasswordChangeConfirmation.d.ts +16 -0
  327. package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -0
  328. package/dist/types/emails/ResetUserPassword.d.ts +17 -0
  329. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -0
  330. package/dist/types/emails/ValidateUserEmail.d.ts +17 -0
  331. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -0
  332. package/dist/types/emails/Welcome.d.ts +17 -0
  333. package/dist/types/emails/Welcome.d.ts.map +1 -0
  334. package/dist/types/emails/index.d.ts +6 -0
  335. package/dist/types/emails/index.d.ts.map +1 -0
  336. package/dist/types/export.d.ts +19 -0
  337. package/dist/types/export.d.ts.map +1 -0
  338. package/dist/types/index.d.ts +4 -0
  339. package/dist/types/index.d.ts.map +1 -0
  340. package/dist/types/logger/index.d.ts +2 -0
  341. package/dist/types/logger/index.d.ts.map +1 -0
  342. package/dist/types/middlewares/admin.middleware.d.ts +10 -0
  343. package/dist/types/middlewares/admin.middleware.d.ts.map +1 -0
  344. package/dist/types/middlewares/oAuth2.middleware.d.ts +9 -0
  345. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -0
  346. package/dist/types/middlewares/request.middleware.d.ts +4 -0
  347. package/dist/types/middlewares/request.middleware.d.ts.map +1 -0
  348. package/dist/types/middlewares/sessionAuth.middleware.d.ts +20 -0
  349. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -0
  350. package/dist/types/models/dictionary.model.d.ts +11 -0
  351. package/dist/types/models/dictionary.model.d.ts.map +1 -0
  352. package/dist/types/models/oAuth2.model.d.ts +10 -0
  353. package/dist/types/models/oAuth2.model.d.ts.map +1 -0
  354. package/dist/types/models/organization.model.d.ts +12 -0
  355. package/dist/types/models/organization.model.d.ts.map +1 -0
  356. package/dist/types/models/project.model.d.ts +12 -0
  357. package/dist/types/models/project.model.d.ts.map +1 -0
  358. package/dist/types/models/user.model.d.ts +3 -0
  359. package/dist/types/models/user.model.d.ts.map +1 -0
  360. package/dist/types/routes/dictionary.routes.d.ts +42 -0
  361. package/dist/types/routes/dictionary.routes.d.ts.map +1 -0
  362. package/dist/types/routes/organization.routes.d.ts +47 -0
  363. package/dist/types/routes/organization.routes.d.ts.map +1 -0
  364. package/dist/types/routes/project.routes.d.ts +57 -0
  365. package/dist/types/routes/project.routes.d.ts.map +1 -0
  366. package/dist/types/routes/sessionAuth.routes.d.ts +66 -0
  367. package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -0
  368. package/dist/types/routes/user.routes.d.ts +42 -0
  369. package/dist/types/routes/user.routes.d.ts.map +1 -0
  370. package/dist/types/schemas/dictionary.schema.d.ts +16 -0
  371. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -0
  372. package/dist/types/schemas/oAuth2.schema.d.ts +19 -0
  373. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -0
  374. package/dist/types/schemas/organization.schema.d.ts +17 -0
  375. package/dist/types/schemas/organization.schema.d.ts.map +1 -0
  376. package/dist/types/schemas/project.schema.d.ts +17 -0
  377. package/dist/types/schemas/project.schema.d.ts.map +1 -0
  378. package/dist/types/schemas/user.schema.d.ts +12 -0
  379. package/dist/types/schemas/user.schema.d.ts.map +1 -0
  380. package/dist/types/services/dictionary.service.d.ts +70 -0
  381. package/dist/types/services/dictionary.service.d.ts.map +1 -0
  382. package/dist/types/services/email.service.d.ts +18 -0
  383. package/dist/types/services/email.service.d.ts.map +1 -0
  384. package/dist/types/services/oAuth2.service.d.ts +85 -0
  385. package/dist/types/services/oAuth2.service.d.ts.map +1 -0
  386. package/dist/types/services/organization.service.d.ts +43 -0
  387. package/dist/types/services/organization.service.d.ts.map +1 -0
  388. package/dist/types/services/project.service.d.ts +43 -0
  389. package/dist/types/services/project.service.d.ts.map +1 -0
  390. package/dist/types/services/projectAccessKey.service.d.ts +16 -0
  391. package/dist/types/services/projectAccessKey.service.d.ts.map +1 -0
  392. package/dist/types/services/sessionAuth.service.d.ts +148 -0
  393. package/dist/types/services/sessionAuth.service.d.ts.map +1 -0
  394. package/dist/types/services/user.service.d.ts +89 -0
  395. package/dist/types/services/user.service.d.ts.map +1 -0
  396. package/dist/types/types/Routes.d.ts +7 -0
  397. package/dist/types/types/Routes.d.ts.map +1 -0
  398. package/dist/types/types/dictionary.types.d.ts +35 -0
  399. package/dist/types/types/dictionary.types.d.ts.map +1 -0
  400. package/dist/types/types/organization.types.d.ts +21 -0
  401. package/dist/types/types/organization.types.d.ts.map +1 -0
  402. package/dist/types/types/project.types.d.ts +40 -0
  403. package/dist/types/types/project.types.d.ts.map +1 -0
  404. package/dist/types/types/session.types.d.ts +22 -0
  405. package/dist/types/types/session.types.d.ts.map +1 -0
  406. package/dist/types/types/user.types.d.ts +28 -0
  407. package/dist/types/types/user.types.d.ts.map +1 -0
  408. package/dist/types/utils/CSRF.d.ts +3 -0
  409. package/dist/types/utils/CSRF.d.ts.map +1 -0
  410. package/dist/types/utils/accessControl.d.ts +58 -0
  411. package/dist/types/utils/accessControl.d.ts.map +1 -0
  412. package/dist/types/utils/cookies.d.ts +12 -0
  413. package/dist/types/utils/cookies.d.ts.map +1 -0
  414. package/dist/types/utils/errors/ErrorHandler.d.ts +32 -0
  415. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -0
  416. package/dist/types/utils/errors/ErrorsClass.d.ts +26 -0
  417. package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -0
  418. package/dist/types/utils/errors/errorCodes.d.ts +811 -0
  419. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -0
  420. package/dist/types/utils/errors/index.d.ts +4 -0
  421. package/dist/types/utils/errors/index.d.ts.map +1 -0
  422. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +23 -0
  423. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts.map +1 -0
  424. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts +22 -0
  425. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts.map +1 -0
  426. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +31 -0
  427. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -0
  428. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +24 -0
  429. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -0
  430. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +22 -0
  431. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -0
  432. package/dist/types/utils/httpStatusCodes.d.ts +395 -0
  433. package/dist/types/utils/httpStatusCodes.d.ts.map +1 -0
  434. package/dist/types/utils/mapper/dictionary.d.ts +12 -0
  435. package/dist/types/utils/mapper/dictionary.d.ts.map +1 -0
  436. package/dist/types/utils/mapper/organization.d.ts +9 -0
  437. package/dist/types/utils/mapper/organization.d.ts.map +1 -0
  438. package/dist/types/utils/mapper/project.d.ts +9 -0
  439. package/dist/types/utils/mapper/project.d.ts.map +1 -0
  440. package/dist/types/utils/mapper/user.d.ts +14 -0
  441. package/dist/types/utils/mapper/user.d.ts.map +1 -0
  442. package/dist/types/utils/mongoDB/connectDB.d.ts +3 -0
  443. package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -0
  444. package/dist/types/utils/oAuth2.d.ts +6 -0
  445. package/dist/types/utils/oAuth2.d.ts.map +1 -0
  446. package/dist/types/utils/responseData.d.ts +53 -0
  447. package/dist/types/utils/responseData.d.ts.map +1 -0
  448. package/dist/types/utils/validation/validateArray.d.ts +13 -0
  449. package/dist/types/utils/validation/validateArray.d.ts.map +1 -0
  450. package/dist/types/utils/validation/validateDictionary.d.ts +12 -0
  451. package/dist/types/utils/validation/validateDictionary.d.ts.map +1 -0
  452. package/dist/types/utils/validation/validateEmail.d.ts +10 -0
  453. package/dist/types/utils/validation/validateEmail.d.ts.map +1 -0
  454. package/dist/types/utils/validation/validateOrganization.d.ts +15 -0
  455. package/dist/types/utils/validation/validateOrganization.d.ts.map +1 -0
  456. package/dist/types/utils/validation/validatePhone.d.ts +10 -0
  457. package/dist/types/utils/validation/validatePhone.d.ts.map +1 -0
  458. package/dist/types/utils/validation/validateProject.d.ts +15 -0
  459. package/dist/types/utils/validation/validateProject.d.ts.map +1 -0
  460. package/dist/types/utils/validation/validateString.d.ts +10 -0
  461. package/dist/types/utils/validation/validateString.d.ts.map +1 -0
  462. package/dist/types/utils/validation/validateUser.d.ts +15 -0
  463. package/dist/types/utils/validation/validateUser.d.ts.map +1 -0
  464. package/package.json +115 -0
@@ -0,0 +1,173 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import {
3
+ Body,
4
+ Button,
5
+ Container,
6
+ Head,
7
+ Heading,
8
+ Hr,
9
+ Html,
10
+ Img,
11
+ Preview,
12
+ Section,
13
+ Text,
14
+ Tailwind,
15
+ Link
16
+ } from "@react-email/components";
17
+ const WelcomeEmailEN = ({ username, loginLink }) => {
18
+ const previewText = `Welcome to Intlayer!`;
19
+ return /* @__PURE__ */ jsxs(Html, { children: [
20
+ /* @__PURE__ */ jsx(Head, {}),
21
+ /* @__PURE__ */ jsx(Preview, { children: previewText }),
22
+ /* @__PURE__ */ jsx(Tailwind, { children: /* @__PURE__ */ jsx(Body, { className: "m-auto px-2 font-sans", children: /* @__PURE__ */ jsxs(Container, { className: "mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]", children: [
23
+ /* @__PURE__ */ jsx(Section, { className: "mt-[32px]", children: /* @__PURE__ */ jsx(
24
+ Img,
25
+ {
26
+ src: `https://intlayer.org/assets/favicon-32x32.png`,
27
+ width: "40",
28
+ height: "37",
29
+ alt: "Intlayer",
30
+ className: "mx-auto my-0"
31
+ }
32
+ ) }),
33
+ /* @__PURE__ */ jsxs(Heading, { className: "mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black", children: [
34
+ "Welcome to ",
35
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" })
36
+ ] }),
37
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
38
+ "Hello ",
39
+ username,
40
+ ","
41
+ ] }),
42
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
43
+ "We're excited to have you on board! Get started by logging in to your ",
44
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" }),
45
+ " account."
46
+ ] }),
47
+ /* @__PURE__ */ jsx(Section, { className: "my-[32px] text-center", children: /* @__PURE__ */ jsx(
48
+ Button,
49
+ {
50
+ className: "rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline",
51
+ href: loginLink,
52
+ children: "Log In to Your Account"
53
+ }
54
+ ) }),
55
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
56
+ "or copy and paste this URL into your browser:",
57
+ " ",
58
+ /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
59
+ ] }),
60
+ /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
61
+ /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "If you have any questions or need help getting started, feel free to reply to this email. We're here to help!" })
62
+ ] }) }) })
63
+ ] });
64
+ };
65
+ const WelcomeEmailFR = ({ username, loginLink }) => {
66
+ const previewText = `Bienvenue chez Intlayer !`;
67
+ return /* @__PURE__ */ jsxs(Html, { children: [
68
+ /* @__PURE__ */ jsx(Head, {}),
69
+ /* @__PURE__ */ jsx(Preview, { children: previewText }),
70
+ /* @__PURE__ */ jsx(Tailwind, { children: /* @__PURE__ */ jsx(Body, { className: "m-auto px-2 font-sans", children: /* @__PURE__ */ jsxs(Container, { className: "mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]", children: [
71
+ /* @__PURE__ */ jsx(Section, { className: "mt-[32px]", children: /* @__PURE__ */ jsx(
72
+ Img,
73
+ {
74
+ src: `https://intlayer.org/assets/favicon-32x32.png`,
75
+ width: "40",
76
+ height: "37",
77
+ alt: "Intlayer",
78
+ className: "mx-auto my-0"
79
+ }
80
+ ) }),
81
+ /* @__PURE__ */ jsxs(Heading, { className: "mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black", children: [
82
+ "Bienvenue chez ",
83
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" })
84
+ ] }),
85
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
86
+ "Bonjour ",
87
+ username,
88
+ ","
89
+ ] }),
90
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
91
+ "Nous sommes ravis de vous avoir parmi nous ! Commencez par vous connecter \xE0 votre compte ",
92
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" }),
93
+ "."
94
+ ] }),
95
+ /* @__PURE__ */ jsx(Section, { className: "my-[32px] text-center", children: /* @__PURE__ */ jsx(
96
+ Button,
97
+ {
98
+ className: "rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline",
99
+ href: loginLink,
100
+ children: "Connectez-vous \xE0 votre compte"
101
+ }
102
+ ) }),
103
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
104
+ "ou copiez et collez cette URL dans votre navigateur :",
105
+ " ",
106
+ /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
107
+ ] }),
108
+ /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
109
+ /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "Si vous avez des questions ou besoin d'aide pour commencer, n'h\xE9sitez pas \xE0 r\xE9pondre \xE0 cet e-mail. Nous sommes l\xE0 pour vous aider !" })
110
+ ] }) }) })
111
+ ] });
112
+ };
113
+ const WelcomeEmailES = ({ username, loginLink }) => {
114
+ const previewText = `\xA1Bienvenido a Intlayer!`;
115
+ return /* @__PURE__ */ jsxs(Html, { children: [
116
+ /* @__PURE__ */ jsx(Head, {}),
117
+ /* @__PURE__ */ jsx(Preview, { children: previewText }),
118
+ /* @__PURE__ */ jsx(Tailwind, { children: /* @__PURE__ */ jsx(Body, { className: "m-auto px-2 font-sans", children: /* @__PURE__ */ jsxs(Container, { className: "mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]", children: [
119
+ /* @__PURE__ */ jsx(Section, { className: "mt-[32px]", children: /* @__PURE__ */ jsx(
120
+ Img,
121
+ {
122
+ src: `https://intlayer.org/assets/favicon-32x32.png`,
123
+ width: "40",
124
+ height: "37",
125
+ alt: "Intlayer",
126
+ className: "mx-auto my-0"
127
+ }
128
+ ) }),
129
+ /* @__PURE__ */ jsxs(Heading, { className: "mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black", children: [
130
+ "Bienvenido a ",
131
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" })
132
+ ] }),
133
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
134
+ "Hola ",
135
+ username,
136
+ ","
137
+ ] }),
138
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
139
+ "\xA1Estamos emocionados de tenerte a bordo! Comienza iniciando sesi\xF3n en tu cuenta de ",
140
+ /* @__PURE__ */ jsx("strong", { children: "Intlayer" }),
141
+ "."
142
+ ] }),
143
+ /* @__PURE__ */ jsx(Section, { className: "my-[32px] text-center", children: /* @__PURE__ */ jsx(
144
+ Button,
145
+ {
146
+ className: "rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline",
147
+ href: loginLink,
148
+ children: "Inicia sesi\xF3n en tu cuenta"
149
+ }
150
+ ) }),
151
+ /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
152
+ "o copia y pega esta URL en tu navegador:",
153
+ " ",
154
+ /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
155
+ ] }),
156
+ /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
157
+ /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "Si tienes preguntas o necesitas ayuda para comenzar, no dudes en responder a este correo electr\xF3nico. \xA1Estamos aqu\xED para ayudarte!" })
158
+ ] }) }) })
159
+ ] });
160
+ };
161
+ const PreviewProps = {
162
+ username: "alanturing",
163
+ loginLink: "https://intlayer.org/login"
164
+ };
165
+ WelcomeEmailEN.PreviewProps = PreviewProps;
166
+ WelcomeEmailFR.PreviewProps = PreviewProps;
167
+ WelcomeEmailES.PreviewProps = PreviewProps;
168
+ export {
169
+ WelcomeEmailEN,
170
+ WelcomeEmailES,
171
+ WelcomeEmailFR
172
+ };
173
+ //# sourceMappingURL=Welcome.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/emails/Welcome.tsx"],"sourcesContent":["import {\n Body,\n Button,\n Container,\n Head,\n Heading,\n Hr,\n Html,\n Img,\n Preview,\n Section,\n Text,\n Tailwind,\n Link,\n} from '@react-email/components';\n\nexport type WelcomeEmailProps = {\n username: string;\n loginLink: string;\n};\n\nexport const WelcomeEmailEN = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Welcome to Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src={`https://intlayer.org/assets/favicon-32x32.png`}\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Welcome to <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hello {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n We're excited to have you on board! Get started by logging in to\n your <strong>Intlayer</strong> account.\n </Text>\n\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Log In to Your Account\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n or copy and paste this URL into your browser:{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n If you have any questions or need help getting started, feel free\n to reply to this email. We're here to help!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailFR = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Bienvenue chez Intlayer !`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src={`https://intlayer.org/assets/favicon-32x32.png`}\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenue chez <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Bonjour {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Nous sommes ravis de vous avoir parmi nous ! Commencez par vous\n connecter à votre compte <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Connectez-vous à votre compte\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ou copiez et collez cette URL dans votre navigateur :{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si vous avez des questions ou besoin d'aide pour commencer,\n n'hésitez pas à répondre à cet e-mail. Nous sommes là pour vous\n aider !\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailES = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `¡Bienvenido a Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src={`https://intlayer.org/assets/favicon-32x32.png`}\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenido a <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hola {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ¡Estamos emocionados de tenerte a bordo! Comienza iniciando sesión\n en tu cuenta de <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Inicia sesión en tu cuenta\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n o copia y pega esta URL en tu navegador:{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si tienes preguntas o necesitas ayuda para comenzar, no dudes en\n responder a este correo electrónico. ¡Estamos aquí para ayudarte!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nconst PreviewProps: WelcomeEmailProps = {\n username: 'alanturing',\n loginLink: 'https://intlayer.org/login',\n};\n\nWelcomeEmailEN.PreviewProps = PreviewProps;\nWelcomeEmailFR.PreviewProps = PreviewProps;\nWelcomeEmailES.PreviewProps = PreviewProps;\n"],"mappings":"AA0BM,cAcM,YAdN;AA1BN;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOA,MAAM,iBAAiB,CAAC,EAAE,UAAU,UAAU,MAAyB;AAC5E,QAAM,cAAc;AAEpB,SACE,qBAAC,QACC;AAAA,wBAAC,QAAK;AAAA,IACN,oBAAC,WAAS,uBAAY;AAAA,IACtB,oBAAC,YACC,8BAAC,QAAK,WAAU,yBACd,+BAAC,aAAU,WAAU,qGACnB;AAAA,0BAAC,WAAQ,WAAU,aACjB;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,OAAM;AAAA,UACN,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,WAAU;AAAA;AAAA,MACZ,GACF;AAAA,MACA,qBAAC,WAAQ,WAAU,qEAAoE;AAAA;AAAA,QAC1E,oBAAC,YAAO,sBAAQ;AAAA,SAC7B;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAC/C;AAAA,QAAS;AAAA,SAClB;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAEjD,oBAAC,YAAO,sBAAQ;AAAA,QAAS;AAAA,SAChC;AAAA,MAEA,oBAAC,WAAQ,WAAU,yBACjB;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAM;AAAA,UACP;AAAA;AAAA,MAED,GACF;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QACR;AAAA,QAC9C,oBAAC,QAAK,MAAM,WAAW,WAAU,+BAC9B,qBACH;AAAA,SACF;AAAA,MACA,oBAAC,MAAG,WAAU,8DAA6D;AAAA,MAC3E,oBAAC,QAAK,WAAU,6CAA4C,2HAG5D;AAAA,OACF,GACF,GACF;AAAA,KACF;AAEJ;AAEO,MAAM,iBAAiB,CAAC,EAAE,UAAU,UAAU,MAAyB;AAC5E,QAAM,cAAc;AAEpB,SACE,qBAAC,QACC;AAAA,wBAAC,QAAK;AAAA,IACN,oBAAC,WAAS,uBAAY;AAAA,IACtB,oBAAC,YACC,8BAAC,QAAK,WAAU,yBACd,+BAAC,aAAU,WAAU,qGACnB;AAAA,0BAAC,WAAQ,WAAU,aACjB;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,OAAM;AAAA,UACN,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,WAAU;AAAA;AAAA,MACZ,GACF;AAAA,MACA,qBAAC,WAAQ,WAAU,qEAAoE;AAAA;AAAA,QACtE,oBAAC,YAAO,sBAAQ;AAAA,SACjC;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAC7C;AAAA,QAAS;AAAA,SACpB;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAE7B,oBAAC,YAAO,sBAAQ;AAAA,QAAS;AAAA,SACpD;AAAA,MACA,oBAAC,WAAQ,WAAU,yBACjB;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAM;AAAA,UACP;AAAA;AAAA,MAED,GACF;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QACA;AAAA,QACtD,oBAAC,QAAK,MAAM,WAAW,WAAU,+BAC9B,qBACH;AAAA,SACF;AAAA,MACA,oBAAC,MAAG,WAAU,8DAA6D;AAAA,MAC3E,oBAAC,QAAK,WAAU,6CAA4C,gKAI5D;AAAA,OACF,GACF,GACF;AAAA,KACF;AAEJ;AAEO,MAAM,iBAAiB,CAAC,EAAE,UAAU,UAAU,MAAyB;AAC5E,QAAM,cAAc;AAEpB,SACE,qBAAC,QACC;AAAA,wBAAC,QAAK;AAAA,IACN,oBAAC,WAAS,uBAAY;AAAA,IACtB,oBAAC,YACC,8BAAC,QAAK,WAAU,yBACd,+BAAC,aAAU,WAAU,qGACnB;AAAA,0BAAC,WAAQ,WAAU,aACjB;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,OAAM;AAAA,UACN,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,WAAU;AAAA;AAAA,MACZ,GACF;AAAA,MACA,qBAAC,WAAQ,WAAU,qEAAoE;AAAA;AAAA,QACxE,oBAAC,YAAO,sBAAQ;AAAA,SAC/B;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAChD;AAAA,QAAS;AAAA,SACjB;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QAEtC,oBAAC,YAAO,sBAAQ;AAAA,QAAS;AAAA,SAC3C;AAAA,MACA,oBAAC,WAAQ,WAAU,yBACjB;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAM;AAAA,UACP;AAAA;AAAA,MAED,GACF;AAAA,MACA,qBAAC,QAAK,WAAU,yCAAwC;AAAA;AAAA,QACb;AAAA,QACzC,oBAAC,QAAK,MAAM,WAAW,WAAU,+BAC9B,qBACH;AAAA,SACF;AAAA,MACA,oBAAC,MAAG,WAAU,8DAA6D;AAAA,MAC3E,oBAAC,QAAK,WAAU,6CAA4C,yJAG5D;AAAA,OACF,GACF,GACF;AAAA,KACF;AAEJ;AAEA,MAAM,eAAkC;AAAA,EACtC,UAAU;AAAA,EACV,WAAW;AACb;AAEA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,eAAe,eAAe;","names":[]}
@@ -0,0 +1,6 @@
1
+ export * from './InviteUserEmail.mjs';
2
+ export * from './ValidateUserEmail.mjs';
3
+ export * from './Welcome.mjs';
4
+ export * from './PasswordChangeConfirmation.mjs';
5
+ export * from './ResetUserPassword.mjs';
6
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/emails/index.ts"],"sourcesContent":["export * from './InviteUserEmail';\nexport * from './ValidateUserEmail';\nexport * from './Welcome';\nexport * from './PasswordChangeConfirmation';\nexport * from './ResetUserPassword';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,15 @@
1
+ import { userRoutes } from './routes/user.routes.mjs';
2
+ import { organizationRoutes } from './routes/organization.routes.mjs';
3
+ import { projectRoutes } from './routes/project.routes.mjs';
4
+ import { dictionaryRoutes } from './routes/dictionary.routes.mjs';
5
+ import { sessionAuthRoutes } from './routes/sessionAuth.routes.mjs';
6
+ export * from './utils/cookies.mjs';
7
+ export * from './utils/httpStatusCodes.mjs';
8
+ export {
9
+ dictionaryRoutes,
10
+ organizationRoutes,
11
+ projectRoutes,
12
+ sessionAuthRoutes,
13
+ userRoutes
14
+ };
15
+ //# sourceMappingURL=export.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/export.ts"],"sourcesContent":["// Routes\nexport { userRoutes } from '@routes/user.routes';\nexport { organizationRoutes } from '@routes/organization.routes';\nexport { projectRoutes } from '@routes/project.routes';\nexport { dictionaryRoutes } from '@routes/dictionary.routes';\nexport { sessionAuthRoutes } from '@routes/sessionAuth.routes';\n\n// Controllers types\nexport type * from '@controllers/sessionAuth.controller';\nexport type * from '@controllers/oAuth2.controller';\nexport type * from '@controllers/organization.controller';\nexport type * from '@controllers/project.controller';\nexport type * from '@controllers/projectAccessKey.controller';\nexport type * from '@controllers/user.controller';\nexport type * from '@controllers/dictionary.controller';\n\n// Objects types\nexport type * from '@/types/organization.types';\nexport type * from '@/types/project.types';\nexport type * from '@/types/user.types';\nexport type * from '@/types/dictionary.types';\n\n// Utils\nexport * from '@utils/cookies';\nexport * from '@utils/httpStatusCodes';\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAkBlC,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,102 @@
1
+ import compression from "compression";
2
+ import cookieParser from "cookie-parser";
3
+ import cors from "cors";
4
+ import dotenv from "dotenv";
5
+ import express from "express";
6
+ import { intlayer, t } from "express-intlayer";
7
+ import { checkAdmin } from './middlewares/admin.middleware.mjs';
8
+ import {
9
+ attachOAuthInstance,
10
+ authenticateOAuth2
11
+ } from './middlewares/oAuth2.middleware.mjs';
12
+ import { logAPIRequestURL } from './middlewares/request.middleware.mjs';
13
+ import {
14
+ checkUser,
15
+ checkOrganization,
16
+ checkProject
17
+ } from './middlewares/sessionAuth.middleware.mjs';
18
+ import { dictionaryRouter } from './routes/dictionary.routes.mjs';
19
+ import { organizationRouter } from './routes/organization.routes.mjs';
20
+ import { projectRouter } from './routes/project.routes.mjs';
21
+ import { sessionAuthRouter } from './routes/sessionAuth.routes.mjs';
22
+ import { userRouter } from './routes/user.routes.mjs';
23
+ import { getOAuth2Token } from './controllers/oAuth2.controller.mjs';
24
+ import {
25
+ getSessionInformation,
26
+ setCSRFToken
27
+ } from './controllers/sessionAuth.controller.mjs';
28
+ import { doubleCsrfProtection } from './utils/CSRF.mjs';
29
+ import { connectDB } from './utils/mongoDB/connectDB.mjs';
30
+ import { logger } from './logger/index.mjs';
31
+ const app = express();
32
+ app.disable("x-powered-by");
33
+ const env = app.get("env");
34
+ logger.info(`run as ${env}`);
35
+ dotenv.config({ path: [".env", `.env.${env}`] });
36
+ const isDev = env === "development";
37
+ connectDB();
38
+ app.use(compression());
39
+ app.use(express.json({ limit: "50mb" }));
40
+ app.use(express.urlencoded({ extended: true }));
41
+ app.use(cookieParser());
42
+ app.use(intlayer());
43
+ const whitelist = [process.env.CLIENT_URL];
44
+ const corsOptions = {
45
+ origin: whitelist,
46
+ credentials: true,
47
+ allowedHeaders: ["authorization", "Content-Type", "credentials"],
48
+ exposedHeaders: [""],
49
+ preflightContinue: false,
50
+ methods: "GET,HEAD,PUT,PATCH,POST,DELETE"
51
+ };
52
+ app.use(cors(corsOptions));
53
+ logger.info("url whitelist : ", whitelist.join(", "));
54
+ app.get("/", (_req, res) => {
55
+ res.send(
56
+ t({
57
+ en: "Ok - locale: en",
58
+ fr: "Ok - locale: fr",
59
+ es: "Ok - locale: es"
60
+ })
61
+ );
62
+ });
63
+ app.use(/(.*)/, checkUser);
64
+ app.use(/(.*)/, checkOrganization);
65
+ app.use(/(.*)/, checkProject);
66
+ if (isDev) {
67
+ app.use(logAPIRequestURL);
68
+ }
69
+ app.get("/session", getSessionInformation);
70
+ app.use("/api/auth", sessionAuthRouter);
71
+ app.get("/csrf-token", setCSRFToken);
72
+ app.use(/(.*)/, attachOAuthInstance);
73
+ app.post("/oauth2/token", getOAuth2Token);
74
+ app.use(/(.*)/, (req, res, next) => {
75
+ if (!res.locals.authType) {
76
+ return authenticateOAuth2(
77
+ req,
78
+ res,
79
+ next
80
+ );
81
+ }
82
+ next();
83
+ });
84
+ app.use(/(.*)/, (req, res, next) => {
85
+ if (res.locals.authType === "session") {
86
+ return doubleCsrfProtection(req, res, next);
87
+ }
88
+ next();
89
+ });
90
+ app.use(/(.*)/, checkAdmin);
91
+ app.use("/api/user", userRouter);
92
+ app.use("/api/organization", organizationRouter);
93
+ app.use("/api/project", projectRouter);
94
+ app.use("/api/dictionary", dictionaryRouter);
95
+ app.listen(process.env.PORT, () => {
96
+ logger.info(`Listening on port ${process.env.PORT}`);
97
+ });
98
+ var src_default = app;
99
+ export {
100
+ src_default as default
101
+ };
102
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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":"AAGA,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,UAAgC;AACvC,OAAO,YAAY;AACnB,OAAO,aAA+B;AACtC,SAAS,UAAU,SAAS;AAG5B,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAGP,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB;AAClC,SAAS,kBAAkB;AAG3B,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGP,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAG1B,SAAS,cAAc;AAEvB,MAAM,MAAe,QAAQ;AAE7B,IAAI,QAAQ,cAAc;AAG1B,MAAM,MAAM,IAAI,IAAI,KAAK;AAEzB,OAAO,KAAK,UAAU,GAAG,EAAE;AAE3B,OAAO,OAAO,EAAE,MAAM,CAAC,QAAQ,QAAQ,GAAG,EAAE,EAAE,CAAC;AAE/C,MAAM,QAAQ,QAAQ;AAEtB,UAAU;AAGV,IAAI,IAAI,YAAY,CAAC;AAGrB,IAAI,IAAI,QAAQ,KAAK,EAAE,OAAO,OAAO,CAAC,CAAC;AAGvC,IAAI,IAAI,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAG9C,IAAI,IAAI,aAAa,CAAC;AAGtB,IAAI,IAAI,SAAS,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,IAAI,KAAK,WAAW,CAAC;AACzB,OAAO,KAAK,oBAAoB,UAAU,KAAK,IAAI,CAAC;AAGpD,IAAI,IAAI,KAAK,CAAC,MAAM,QAAQ;AAC1B,MAAI;AAAA,IACF,EAAE;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF,CAAC;AAGD,IAAI,IAAI,QAAQ,SAAS;AACzB,IAAI,IAAI,QAAQ,iBAAiB;AACjC,IAAI,IAAI,QAAQ,YAAY;AAG5B,IAAI,OAAO;AACT,MAAI,IAAI,gBAAgB;AAC1B;AAGA,IAAI,IAAI,YAAY,qBAAqB;AACzC,IAAI,IAAI,aAAa,iBAAiB;AAGtC,IAAI,IAAI,eAAe,YAAY;AAGnC,IAAI,IAAI,QAAQ,mBAAmB;AACnC,IAAI,KAAK,iBAAiB,cAAc;AACxC,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;AAElC,MAAI,CAAC,IAAI,OAAO,UAAU;AACxB,WAAO;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,WAAO,qBAAqB,KAAK,KAAK,IAAI;AAAA,EAC5C;AACA,OAAK;AACP,CAAC;AAGD,IAAI,IAAI,QAAQ,UAAU;AAG1B,IAAI,IAAI,aAAa,UAAU;AAC/B,IAAI,IAAI,qBAAqB,kBAAkB;AAC/C,IAAI,IAAI,gBAAgB,aAAa;AACrC,IAAI,IAAI,mBAAmB,gBAAgB;AAG3C,IAAI,OAAO,QAAQ,IAAI,MAAM,MAAM;AACjC,SAAO,KAAK,qBAAqB,QAAQ,IAAI,IAAI,EAAE;AACrD,CAAC;AAGD,IAAO,cAAQ;","names":[]}
@@ -0,0 +1,29 @@
1
+ import { transports, createLogger, format } from "winston";
2
+ const logger = createLogger({
3
+ format: format.combine(
4
+ format.colorize(),
5
+ format.timestamp({
6
+ format: "YYYY-MM-DD HH:mm:ss"
7
+ }),
8
+ format.json()
9
+ ),
10
+ defaultMeta: { service: "user-service" },
11
+ transports: [
12
+ //
13
+ // - Write all logs with importance level of `error` or less to `error.log`
14
+ // - Write all logs with importance level of `info` or less to `combined.log`
15
+ //
16
+ new transports.Console({ format: format.simple() })
17
+ ]
18
+ });
19
+ if (process.env.NODE_ENV === "production") {
20
+ logger.add(
21
+ new transports.File({ filename: "logs/error.log", level: "error" })
22
+ );
23
+ logger.add(new transports.File({ filename: "logs/info.log", level: "info" }));
24
+ logger.add(new transports.File({ filename: "logs/combined.log" }));
25
+ }
26
+ export {
27
+ logger
28
+ };
29
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/logger/index.ts"],"sourcesContent":["import { transports, createLogger, format } from 'winston';\n\nexport const logger = createLogger({\n format: format.combine(\n format.colorize(),\n format.timestamp({\n format: 'YYYY-MM-DD HH:mm:ss',\n }),\n format.json()\n ),\n defaultMeta: { service: 'user-service' },\n transports: [\n //\n // - Write all logs with importance level of `error` or less to `error.log`\n // - Write all logs with importance level of `info` or less to `combined.log`\n //\n new transports.Console({ format: format.simple() }),\n ],\n});\n\nif (process.env.NODE_ENV === 'production') {\n logger.add(\n new transports.File({ filename: 'logs/error.log', level: 'error' })\n );\n logger.add(new transports.File({ filename: 'logs/info.log', level: 'info' }));\n logger.add(new transports.File({ filename: 'logs/combined.log' }));\n}\n"],"mappings":"AAAA,SAAS,YAAY,cAAc,cAAc;AAE1C,MAAM,SAAS,aAAa;AAAA,EACjC,QAAQ,OAAO;AAAA,IACb,OAAO,SAAS;AAAA,IAChB,OAAO,UAAU;AAAA,MACf,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,OAAO,KAAK;AAAA,EACd;AAAA,EACA,aAAa,EAAE,SAAS,eAAe;AAAA,EACvC,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,IAKV,IAAI,WAAW,QAAQ,EAAE,QAAQ,OAAO,OAAO,EAAE,CAAC;AAAA,EACpD;AACF,CAAC;AAED,IAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,SAAO;AAAA,IACL,IAAI,WAAW,KAAK,EAAE,UAAU,kBAAkB,OAAO,QAAQ,CAAC;AAAA,EACpE;AACA,SAAO,IAAI,IAAI,WAAW,KAAK,EAAE,UAAU,iBAAiB,OAAO,OAAO,CAAC,CAAC;AAC5E,SAAO,IAAI,IAAI,WAAW,KAAK,EAAE,UAAU,oBAAoB,CAAC,CAAC;AACnE;","names":[]}
@@ -0,0 +1,20 @@
1
+ const checkAdmin = async (_req, res, next) => {
2
+ const { organization, project, user } = res.locals;
3
+ res.locals.isOrganizationAdmin = false;
4
+ res.locals.isProjectAdmin = false;
5
+ if (user) {
6
+ if (organization) {
7
+ const isOrganizationAdmin = organization.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
8
+ res.locals.isOrganizationAdmin = isOrganizationAdmin;
9
+ }
10
+ if (project) {
11
+ const isProjectAdmin = project.adminsIds.map((id) => String(id)).includes(String(user._id)) ?? false;
12
+ res.locals.isProjectAdmin = isProjectAdmin;
13
+ }
14
+ }
15
+ return next();
16
+ };
17
+ export {
18
+ checkAdmin
19
+ };
20
+ //# sourceMappingURL=admin.middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/middlewares/admin.middleware.ts"],"sourcesContent":["import type { Request, NextFunction } from 'express';\nimport { ResponseWithInformation } from './sessionAuth.middleware';\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 } = res.locals;\n\n res.locals.isOrganizationAdmin = false;\n res.locals.isProjectAdmin = false;\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\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 }\n\n return next();\n};\n"],"mappings":"AASO,MAAM,aAAa,OACxB,MACA,KACA,SACkB;AAClB,QAAM,EAAE,cAAc,SAAS,KAAK,IAAI,IAAI;AAE5C,MAAI,OAAO,sBAAsB;AACjC,MAAI,OAAO,iBAAiB;AAE5B,MAAI,MAAM;AACR,QAAI,cAAc;AAChB,YAAM,sBACJ,aAAa,UACV,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,EACtB,SAAS,OAAO,KAAK,GAAG,CAAC,KAAK;AAEnC,UAAI,OAAO,sBAAsB;AAAA,IACnC;AAEA,QAAI,SAAS;AACX,YAAM,iBACJ,QAAQ,UAAU,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,EAAE,SAAS,OAAO,KAAK,GAAG,CAAC,KACnE;AAEF,UAAI,OAAO,iBAAiB;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,KAAK;AACd;","names":[]}
@@ -0,0 +1,57 @@
1
+ import { logger } from './../logger/index.mjs';
2
+ import { OrganizationModel } from './../models/organization.model.mjs';
3
+ import { ProjectModel } from './../models/project.model.mjs';
4
+ import { UserModel } from './../models/user.model.mjs';
5
+ import { getAuthModel, authenticateOptions } from './../utils/oAuth2.mjs';
6
+ import OAuth2Server, {
7
+ Request as OAuthRequest,
8
+ Response as OAuthResponse
9
+ } from "oauth2-server";
10
+ const oauth = new OAuth2Server({
11
+ model: getAuthModel(),
12
+ accessTokenLifetime: 60 * 60,
13
+ // 1 hour
14
+ allowBearerTokensInQueryString: true
15
+ });
16
+ const attachOAuthInstance = async (req, _res, next) => {
17
+ req.oauth = oauth;
18
+ next();
19
+ };
20
+ const authenticateOAuth2 = async (req, res, next) => {
21
+ try {
22
+ const hasToken = !!req.headers.authorization;
23
+ if (!hasToken) {
24
+ return next();
25
+ }
26
+ const oauthRequest = new OAuthRequest(req);
27
+ const oauthResponse = new OAuthResponse(res);
28
+ const oAuthToken = await req.oauth.authenticate(
29
+ oauthRequest,
30
+ oauthResponse,
31
+ authenticateOptions
32
+ );
33
+ const user = await UserModel.findById(oAuthToken.user._id);
34
+ if (user) {
35
+ res.locals.user = user;
36
+ res.locals.authType = "oauth2";
37
+ }
38
+ const organization = await OrganizationModel.findById(
39
+ oAuthToken.organization._id
40
+ );
41
+ if (organization) {
42
+ res.locals.organization = organization;
43
+ }
44
+ const project = await ProjectModel.findById(oAuthToken.project._id);
45
+ if (project) {
46
+ res.locals.project = project;
47
+ }
48
+ } catch (err) {
49
+ logger.info(err);
50
+ }
51
+ next();
52
+ };
53
+ export {
54
+ attachOAuthInstance,
55
+ authenticateOAuth2
56
+ };
57
+ //# sourceMappingURL=oAuth2.middleware.mjs.map
@@ -0,0 +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":"AACA,SAAS,cAAc;AACvB,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,cAAc,2BAA2B;AAElD,OAAO;AAAA,EACL,WAAW;AAAA,EACX,YAAY;AAAA,OACP;AAIP,MAAM,QAAQ,IAAI,aAAa;AAAA,EAC7B,OAAO,aAAa;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,aAAa,GAAG;AAEzC,UAAM,gBAAgB,IAAI,cAAc,GAAG;AAE3C,UAAM,aAAa,MAAM,IAAI,MAAM;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,UAAU,SAAS,WAAW,KAAK,GAAG;AAEzD,QAAI,MAAM;AACR,UAAI,OAAO,OAAO;AAClB,UAAI,OAAO,WAAW;AAAA,IACxB;AAEA,UAAM,eAAe,MAAM,kBAAkB;AAAA,MAC3C,WAAW,aAAa;AAAA,IAC1B;AAEA,QAAI,cAAc;AAChB,UAAI,OAAO,eAAe;AAAA,IAC5B;AAEA,UAAM,UAAU,MAAM,aAAa,SAAS,WAAW,QAAQ,GAAG;AAElE,QAAI,SAAS;AACX,UAAI,OAAO,UAAU;AAAA,IACvB;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,KAAK,GAAG;AAAA,EACjB;AACA,OAAK;AACP;","names":[]}
@@ -0,0 +1,17 @@
1
+ import { logger } from './../logger/index.mjs';
2
+ const logAPIRequestURL = (req, res, next) => {
3
+ const queryDetails = {
4
+ params: req.params,
5
+ query: req.query,
6
+ body: req.body,
7
+ locals: res.locals
8
+ };
9
+ logger.info(
10
+ `API Request - ${req.method} - ${req.originalUrl} - ${JSON.stringify(queryDetails, null, 2)}`
11
+ );
12
+ next();
13
+ };
14
+ export {
15
+ logAPIRequestURL
16
+ };
17
+ //# sourceMappingURL=request.middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/middlewares/request.middleware.ts"],"sourcesContent":["import { logger } from '@logger';\nimport type { Request, NextFunction } from 'express';\nimport type { ResponseWithInformation } from './sessionAuth.middleware';\n\nexport const logAPIRequestURL = (\n req: Request,\n res: ResponseWithInformation,\n next: NextFunction\n): void => {\n const queryDetails = {\n params: req.params,\n query: req.query,\n body: req.body,\n locals: res.locals,\n };\n\n logger.info(\n `API Request - ${req.method} - ${req.originalUrl} - ${JSON.stringify(queryDetails, null, 2)}`\n );\n\n next();\n};\n"],"mappings":"AAAA,SAAS,cAAc;AAIhB,MAAM,mBAAmB,CAC9B,KACA,KACA,SACS;AACT,QAAM,eAAe;AAAA,IACnB,QAAQ,IAAI;AAAA,IACZ,OAAO,IAAI;AAAA,IACX,MAAM,IAAI;AAAA,IACV,QAAQ,IAAI;AAAA,EACd;AAEA,SAAO;AAAA,IACL,iBAAiB,IAAI,MAAM,MAAM,IAAI,WAAW,MAAM,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AAAA,EAC7F;AAEA,OAAK;AACP;","names":[]}
@@ -0,0 +1,96 @@
1
+ import { OrganizationModel } from './../models/organization.model.mjs';
2
+ import { ProjectModel } from './../models/project.model.mjs';
3
+ import {
4
+ clearOrganizationAuth,
5
+ clearProjectAuth
6
+ } from './../services/sessionAuth.service.mjs';
7
+ import { getUserBySession as getUserBySessionService } from './../services/user.service.mjs';
8
+ import { Cookies } from './../utils/cookies.mjs';
9
+ import jwt from "jsonwebtoken";
10
+ var AuthInformationType = /* @__PURE__ */ ((AuthInformationType2) => {
11
+ AuthInformationType2[AuthInformationType2["IsNull"] = 0] = "IsNull";
12
+ AuthInformationType2[AuthInformationType2["IsDefined"] = 1] = "IsDefined";
13
+ return AuthInformationType2;
14
+ })(AuthInformationType || {});
15
+ const checkUser = async (req, res, next) => {
16
+ const { [Cookies.JWT_AUTH]: sessionToken } = req.cookies;
17
+ res.locals.user = null;
18
+ res.locals.authType = null;
19
+ try {
20
+ if (sessionToken) {
21
+ const user = await getUserBySessionService(
22
+ sessionToken
23
+ );
24
+ if (user) {
25
+ res.locals.user = user.toObject();
26
+ res.locals.authType = "session";
27
+ }
28
+ }
29
+ } catch (error) {
30
+ console.error("Error fetching session:", error);
31
+ }
32
+ return next();
33
+ };
34
+ const checkOrganization = async (req, res, next) => {
35
+ const jwtTokenOrganization = req.cookies[Cookies.JWT_ORGANIZATION];
36
+ res.locals.organization = null;
37
+ try {
38
+ if (!jwtTokenOrganization || jwtTokenOrganization === "undefined") {
39
+ clearOrganizationAuth(res);
40
+ return next();
41
+ }
42
+ const organizationData = jwt.verify(
43
+ jwtTokenOrganization,
44
+ process.env.JWT_TOKEN_SECRET
45
+ );
46
+ if (!organizationData) {
47
+ clearOrganizationAuth(res);
48
+ return next();
49
+ }
50
+ const organization = await OrganizationModel.findById(organizationData._id);
51
+ if (!organization) {
52
+ clearOrganizationAuth(res);
53
+ return next();
54
+ }
55
+ res.locals.organization = organization.toObject();
56
+ } catch (error) {
57
+ console.error("Error fetching organization:", error);
58
+ }
59
+ return next();
60
+ };
61
+ const checkProject = async (req, res, next) => {
62
+ const jwtTokenProject = req.cookies[Cookies.JWT_PROJECT];
63
+ res.locals.project = null;
64
+ try {
65
+ if (!jwtTokenProject || jwtTokenProject === "undefined") {
66
+ clearProjectAuth(res);
67
+ return next();
68
+ }
69
+ const decodedTokenProject = jwt.verify(
70
+ jwtTokenProject,
71
+ process.env.JWT_TOKEN_SECRET
72
+ );
73
+ if (!decodedTokenProject) {
74
+ clearProjectAuth(res);
75
+ return next();
76
+ }
77
+ const project = await ProjectModel.findById(
78
+ decodedTokenProject._id
79
+ );
80
+ if (!project || !res.locals.organization || String(project.organizationId) !== String(res.locals.organization._id)) {
81
+ clearProjectAuth(res);
82
+ return next();
83
+ }
84
+ res.locals.project = project.toObject();
85
+ } catch (error) {
86
+ console.error("Error fetching project:", error);
87
+ }
88
+ return next();
89
+ };
90
+ export {
91
+ AuthInformationType,
92
+ checkOrganization,
93
+ checkProject,
94
+ checkUser
95
+ };
96
+ //# sourceMappingURL=sessionAuth.middleware.mjs.map
@@ -0,0 +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":"AAEA,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB,+BAA+B;AAC5D,SAAS,eAAe;AAExB,OAAO,SAAS;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,QAAQ,QAAQ,GAAG,aAAa,IAAI,IAAI;AAEjD,MAAI,OAAO,OAAO;AAClB,MAAI,OAAO,WAAW;AAEtB,MAAI;AACF,QAAI,cAAc;AAChB,YAAM,OAA6B,MAAM;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,QAAQ,gBAAgB;AAEjE,MAAI,OAAO,eAAe;AAE1B,MAAI;AACF,QAAI,CAAC,wBAAwB,yBAAyB,aAAa;AACjE,4BAAsB,GAAG;AACzB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,mBAAmB,IAAI;AAAA,MAC3B;AAAA,MACA,QAAQ,IAAI;AAAA,IACd;AAEA,QAAI,CAAC,kBAAkB;AACrB,4BAAsB,GAAG;AACzB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,eACJ,MAAM,kBAAkB,SAAS,iBAAiB,GAAG;AAEvD,QAAI,CAAC,cAAc;AACjB,4BAAsB,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,QAAQ,WAAW;AACvD,MAAI,OAAO,UAAU;AAErB,MAAI;AACF,QAAI,CAAC,mBAAmB,oBAAoB,aAAa;AACvD,uBAAiB,GAAG;AACpB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,sBAAsB,IAAI;AAAA,MAC9B;AAAA,MACA,QAAQ,IAAI;AAAA,IACd;AAEA,QAAI,CAAC,qBAAqB;AACxB,uBAAiB,GAAG;AACpB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAkC,MAAM,aAAa;AAAA,MACzD,oBAAoB;AAAA,IACtB;AAEA,QACE,CAAC,WACD,CAAC,IAAI,OAAO,gBACZ,OAAO,QAAQ,cAAc,MAAM,OAAO,IAAI,OAAO,aAAa,GAAG,GACrE;AACA,uBAAiB,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"]}
@@ -0,0 +1,10 @@
1
+ import { dictionarySchema } from './../schemas/dictionary.schema.mjs';
2
+ import { model } from "mongoose";
3
+ const DictionaryModel = model(
4
+ "dictionary",
5
+ dictionarySchema
6
+ );
7
+ export {
8
+ DictionaryModel
9
+ };
10
+ //# sourceMappingURL=dictionary.model.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/models/dictionary.model.ts"],"sourcesContent":["import { dictionarySchema } from '@schemas/dictionary.schema';\nimport { model } from 'mongoose';\nimport type { Dictionary } from '@/types/dictionary.types';\n\nexport const DictionaryModel = model<Dictionary>(\n 'dictionary',\n dictionarySchema\n);\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,aAAa;AAGf,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AACF;","names":[]}
@@ -0,0 +1,7 @@
1
+ import { model } from "mongoose";
2
+ import { accessTokenSchema } from '../schemas/oAuth2.schema.mjs';
3
+ const OAuth2AccessTokenModel = model("oAuth2", accessTokenSchema);
4
+ export {
5
+ OAuth2AccessTokenModel
6
+ };
7
+ //# sourceMappingURL=oAuth2.model.mjs.map