@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,616 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var sessionAuth_controller_exports = {};
30
+ __export(sessionAuth_controller_exports, {
31
+ askResetPassword: () => askResetPassword,
32
+ getSessionInformation: () => getSessionInformation,
33
+ githubCallback: () => githubCallback,
34
+ githubLoginQuery: () => githubLoginQuery,
35
+ googleCallback: () => googleCallback,
36
+ googleLoginQuery: () => googleLoginQuery,
37
+ logOut: () => logOut,
38
+ loginEmailPassword: () => loginEmailPassword,
39
+ registerEmailPassword: () => registerEmailPassword,
40
+ resetPassword: () => resetPassword,
41
+ setCSRFToken: () => setCSRFToken,
42
+ updatePassword: () => updatePassword,
43
+ validEmail: () => validEmail
44
+ });
45
+ module.exports = __toCommonJS(sessionAuth_controller_exports);
46
+ var import_logger = require('./../logger/index.cjs');
47
+ var import_sessionAuth = require('./../routes/sessionAuth.routes.cjs');
48
+ var import_email = require('./../services/email.service.cjs');
49
+ var sessionAuthService = __toESM(require('./../services/sessionAuth.service.cjs'), 1);
50
+ var userService = __toESM(require('./../services/user.service.cjs'), 1);
51
+ var import_CSRF = require('./../utils/CSRF.cjs');
52
+ var import_errors = require('./../utils/errors/index.cjs');
53
+ var import_httpStatusCodes = require('./../utils/httpStatusCodes.cjs');
54
+ var import_user = require('./../utils/mapper/user.cjs');
55
+ var import_responseData = require('./../utils/responseData.cjs');
56
+ var import_mongoose = require("mongoose");
57
+ var import_uuid = require("uuid");
58
+ const setCSRFToken = (req, res, _next) => {
59
+ const csrf_token = (0, import_CSRF.generateToken)(req, res);
60
+ const responseData = (0, import_responseData.formatResponse)({
61
+ data: { csrf_token }
62
+ });
63
+ res.locals.csrf_token = csrf_token;
64
+ res.json(responseData);
65
+ };
66
+ const registerEmailPassword = async (req, res, _next) => {
67
+ const { user } = res.locals;
68
+ if (user) {
69
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_ALREADY_LOGGED_IN");
70
+ return;
71
+ }
72
+ const userData = req.body;
73
+ try {
74
+ let user2 = await userService.getUserByEmail(userData.email);
75
+ if (user2) {
76
+ const emailProvider = user2.provider?.find(
77
+ (provider) => provider.provider === "email"
78
+ );
79
+ if (emailProvider) {
80
+ if (emailProvider.emailValidated) {
81
+ import_errors.ErrorHandler.handleGenericErrorResponse(
82
+ res,
83
+ "EMAIL_ALREADY_VALIDATED"
84
+ );
85
+ return;
86
+ } else {
87
+ user2 = await sessionAuthService.updateUserProvider(
88
+ user2._id,
89
+ "email",
90
+ {
91
+ secret: (0, import_uuid.v4)()
92
+ }
93
+ );
94
+ }
95
+ } else {
96
+ user2 = await sessionAuthService.addUserProvider(user2._id, {
97
+ provider: "email",
98
+ emailValidated: void 0,
99
+ secret: (0, import_uuid.v4)()
100
+ });
101
+ }
102
+ } else {
103
+ user2 = await userService.createUser(userData);
104
+ import_logger.logger.info(`New registration: ${user2.name} - ${user2.email}`);
105
+ }
106
+ if (!user2) {
107
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_CREATION_FAILED", {
108
+ email: userData.email
109
+ });
110
+ return;
111
+ }
112
+ await sessionAuthService.setUserAuth(res, user2);
113
+ const formattedUser = (0, import_user.mapUserToAPI)(user2);
114
+ const responseData = (0, import_responseData.formatResponse)({ data: formattedUser });
115
+ res.json(responseData);
116
+ return;
117
+ } catch (error) {
118
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
119
+ return;
120
+ }
121
+ };
122
+ const loginEmailPassword = async (req, res, _next) => {
123
+ const { user } = res.locals;
124
+ if (user) {
125
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_ALREADY_LOGGED_IN");
126
+ return;
127
+ }
128
+ const { email, password } = req.body;
129
+ try {
130
+ const { user: loggedInUser, error } = await sessionAuthService.testUserPassword(email, password);
131
+ if (error) {
132
+ if (!user) {
133
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "LOGIN_FAILED");
134
+ return;
135
+ }
136
+ }
137
+ if (!loggedInUser) {
138
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
139
+ return;
140
+ }
141
+ await sessionAuthService.setUserAuth(res, loggedInUser);
142
+ const formattedUser = (0, import_user.mapUserToAPI)(loggedInUser);
143
+ const responseData = (0, import_responseData.formatResponse)({ data: formattedUser });
144
+ import_logger.logger.info(`Login: ${loggedInUser.email}`);
145
+ res.json(responseData);
146
+ return;
147
+ } catch (error) {
148
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
149
+ return;
150
+ }
151
+ };
152
+ const logOut = async (_req, res, _next) => {
153
+ const { user } = res.locals;
154
+ if (!user) {
155
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
156
+ return;
157
+ }
158
+ await sessionAuthService.clearUserAuth(res);
159
+ sessionAuthService.clearOrganizationAuth(res);
160
+ sessionAuthService.clearProjectAuth(res);
161
+ import_logger.logger.info(`Logout: ${user.name} - ${user.email}`);
162
+ const responseData = (0, import_responseData.formatResponse)({ data: void 0 });
163
+ res.json(responseData);
164
+ };
165
+ const updatePassword = async (req, res, _next) => {
166
+ const { oldPassword, newPassword } = req.body;
167
+ let { user } = res.locals;
168
+ if (!user) {
169
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
170
+ return;
171
+ }
172
+ try {
173
+ const { error } = await sessionAuthService.testUserPassword(
174
+ user.email,
175
+ oldPassword
176
+ );
177
+ if (error) {
178
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "LOGIN_FAILED");
179
+ return;
180
+ }
181
+ user = await sessionAuthService.changeUserPassword(
182
+ user._id,
183
+ oldPassword,
184
+ newPassword
185
+ );
186
+ if (!user || typeof user !== "object") {
187
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_DATA_NOT_FOUND");
188
+ return;
189
+ }
190
+ import_logger.logger.info(
191
+ `Password changed - User : Name : ${user.name}, id : ${String(user._id)}`
192
+ );
193
+ const formattedUser = (0, import_user.mapUserToAPI)(user);
194
+ const responseData = (0, import_responseData.formatResponse)({ data: formattedUser });
195
+ res.json(responseData);
196
+ return;
197
+ } catch (error) {
198
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
199
+ return;
200
+ }
201
+ };
202
+ const validEmail = async (req, res, _next) => {
203
+ const { userId, secret } = req.params;
204
+ const { organization } = res.locals;
205
+ if (!import_mongoose.Types.ObjectId.isValid(userId.toString())) {
206
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "INVALID_USER_ID");
207
+ return;
208
+ }
209
+ if (!organization) {
210
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "ORGANIZATION_NOT_FOUND");
211
+ return;
212
+ }
213
+ const user = await userService.getUserById(userId);
214
+ if (!user) {
215
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND", { userId });
216
+ return;
217
+ }
218
+ await sessionAuthService.activateUser(user._id, secret);
219
+ import_logger.logger.info(
220
+ `User activated - User: Name: ${user.name}, id: ${String(user._id)}`
221
+ );
222
+ await (0, import_email.sendEmail)({
223
+ type: "welcome",
224
+ to: user.email,
225
+ username: user.name,
226
+ loginLink: import_sessionAuth.sessionAuthRoutes.loginEmailPassword.url
227
+ });
228
+ const formattedUser = (0, import_user.mapUserToAPI)(user);
229
+ const responseData = (0, import_responseData.formatResponse)({ data: formattedUser });
230
+ res.json(responseData);
231
+ };
232
+ const askResetPassword = async (req, res, _next) => {
233
+ const { email } = req.body;
234
+ if (!email) {
235
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "EMAIL_NOT_PROVIDED");
236
+ return;
237
+ }
238
+ try {
239
+ const updatedUser = await sessionAuthService.requestPasswordReset(email);
240
+ if (!updatedUser) {
241
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND", { email });
242
+ return;
243
+ }
244
+ import_logger.logger.info(
245
+ `Ask changing password - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`
246
+ );
247
+ await (0, import_email.sendEmail)({
248
+ type: "resetPassword",
249
+ to: updatedUser.email,
250
+ username: updatedUser.name,
251
+ resetLink: import_sessionAuth.sessionAuthRoutes.resetPassword.url({
252
+ userId: String(updatedUser._id),
253
+ secret: updatedUser.provider?.find(
254
+ (provider) => provider.provider === "email"
255
+ )?.secret ?? ""
256
+ })
257
+ });
258
+ const responseData = (0, import_responseData.formatResponse)({ data: void 0 });
259
+ res.json(responseData);
260
+ return;
261
+ } catch (error) {
262
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
263
+ return;
264
+ }
265
+ };
266
+ const resetPassword = async (req, res, _next) => {
267
+ const { secret, userId } = req.params;
268
+ const password = req.body.password;
269
+ const userIdString = String(userId);
270
+ if (!userId || !userIdString || !import_mongoose.Types.ObjectId.isValid(userIdString)) {
271
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "INVALID_USER_ID", { userId });
272
+ return;
273
+ }
274
+ if (!secret) {
275
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "SECRET_NOT_PROVIDED");
276
+ return;
277
+ }
278
+ try {
279
+ const updatedUser = await sessionAuthService.resetUserPassword(
280
+ userId,
281
+ secret,
282
+ password
283
+ );
284
+ import_logger.logger.info(
285
+ `Password changed - User: Name: ${updatedUser.name}, id: ${String(updatedUser._id)}`
286
+ );
287
+ await (0, import_email.sendEmail)({
288
+ type: "passwordChangeConfirmation",
289
+ to: updatedUser.email,
290
+ username: updatedUser.name
291
+ });
292
+ const formattedUser = (0, import_user.mapUserToAPI)(updatedUser);
293
+ const responseData = (0, import_responseData.formatResponse)({ data: formattedUser });
294
+ res.json(responseData);
295
+ return;
296
+ } catch (error) {
297
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
298
+ return;
299
+ }
300
+ };
301
+ const getSessionInformation = async (req, res, _next) => {
302
+ const { session_token: sessionToken } = req.query;
303
+ let { user } = res.locals;
304
+ const { organization, project } = res.locals;
305
+ try {
306
+ if (sessionToken) {
307
+ user = await userService.getUserBySession(sessionToken);
308
+ }
309
+ if (!user) {
310
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_NOT_FOUND");
311
+ return;
312
+ }
313
+ const session = user.session;
314
+ if (!session) {
315
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "SESSION_NOT_FOUND");
316
+ return;
317
+ }
318
+ const formattedUser = {
319
+ ...(0, import_user.mapUserToAPI)(user),
320
+ role: "user"
321
+ };
322
+ const responseData = (0, import_responseData.formatResponse)({
323
+ data: { session, user: formattedUser, organization, project }
324
+ });
325
+ res.json(responseData);
326
+ return;
327
+ } catch (error) {
328
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
329
+ return;
330
+ }
331
+ };
332
+ const githubLoginQuery = (req, res, _next) => {
333
+ const { origin } = req.query;
334
+ const { user } = res.locals;
335
+ if (user) {
336
+ import_errors.ErrorHandler.handleGenericErrorResponse(res, "USER_ALREADY_LOGGED_IN");
337
+ return;
338
+ }
339
+ const encodedOrigin = encodeURIComponent(origin);
340
+ const redirectURI = `${process.env.BACKEND_URL}/api/auth/callback/github?redirect_uri=${encodedOrigin}`;
341
+ const encodedRedirectURI = encodeURIComponent(redirectURI);
342
+ res.redirect(
343
+ `https://github.com/login/oauth/authorize?client_id=${process.env.GITHUB_CLIENT_ID}&redirect_uri=${encodedRedirectURI}`
344
+ );
345
+ };
346
+ const githubCallback = async (req, res, _next) => {
347
+ const { code, redirect_uri } = req.query;
348
+ if (!code) {
349
+ const errorMessage = "Code not provided";
350
+ import_logger.logger.error(errorMessage);
351
+ res.redirect(redirect_uri);
352
+ return;
353
+ }
354
+ if (!redirect_uri) {
355
+ const errorMessage = "Redirect URI not provided";
356
+ import_logger.logger.error(errorMessage);
357
+ res.redirect(redirect_uri);
358
+ return;
359
+ }
360
+ try {
361
+ const tokenResponse = await fetch(
362
+ "https://github.com/login/oauth/access_token",
363
+ {
364
+ method: "POST",
365
+ headers: {
366
+ "Content-Type": "application/json",
367
+ Accept: "application/json"
368
+ },
369
+ body: JSON.stringify({
370
+ client_id: process.env.GITHUB_CLIENT_ID,
371
+ client_secret: process.env.GITHUB_CLIENT_SECRET,
372
+ code
373
+ })
374
+ }
375
+ );
376
+ const tokenData = await tokenResponse.json();
377
+ const userResponse = await fetch("https://api.github.com/user", {
378
+ method: "GET",
379
+ headers: {
380
+ Authorization: `Bearer ${tokenData.access_token}`,
381
+ Accept: "application/vnd.github.v3+json"
382
+ }
383
+ });
384
+ if (!userResponse.ok) {
385
+ throw new import_errors.GenericError("GITHUB_FETCH_USER_DATA_FAILED", { userResponse });
386
+ }
387
+ const userData = await userResponse.json();
388
+ const emailResponse = await fetch("https://api.github.com/user/emails", {
389
+ method: "GET",
390
+ headers: {
391
+ Authorization: `Bearer ${tokenData.access_token}`,
392
+ Accept: "application/vnd.github.v3+json"
393
+ }
394
+ });
395
+ if (!emailResponse.ok) {
396
+ throw new import_errors.GenericError("GIT_HUB_FETCH_USER_EMAIL_FAILED", {
397
+ emailResponse
398
+ });
399
+ }
400
+ const emails = await emailResponse.json();
401
+ const primaryEmail = emails.find((email) => email.primary)?.email;
402
+ if (!primaryEmail) {
403
+ const errorMessage = "Primary email not found";
404
+ import_logger.logger.error(errorMessage);
405
+ const responseCode = import_httpStatusCodes.HttpStatusCodes.NOT_FOUND_404;
406
+ res.redirect(responseCode, redirect_uri);
407
+ return;
408
+ }
409
+ let existingUser = await userService.getUserByEmail(primaryEmail);
410
+ if (existingUser) {
411
+ const existingProvider = await sessionAuthService.getUserProvider(
412
+ existingUser._id,
413
+ "github"
414
+ );
415
+ if (existingProvider?.providerAccountId !== userData.id) {
416
+ const updatedUser2 = await sessionAuthService.updateUserProvider(
417
+ existingUser._id,
418
+ "github",
419
+ {
420
+ providerAccountId: userData.id
421
+ }
422
+ );
423
+ import_logger.logger.info(
424
+ `GitHub login provider updated - User: Name: ${updatedUser2.name}, id: ${String(updatedUser2._id)}`
425
+ );
426
+ if (updatedUser2) {
427
+ existingUser = updatedUser2;
428
+ }
429
+ }
430
+ const updatedUser = await userService.updateUserById(existingUser._id, {
431
+ name: existingUser.name ?? userData.name
432
+ });
433
+ await sessionAuthService.setUserAuth(res, updatedUser);
434
+ res.redirect(redirect_uri);
435
+ return;
436
+ }
437
+ const userInformation = {
438
+ name: userData.name,
439
+ email: primaryEmail
440
+ };
441
+ const userProvider = {
442
+ provider: "github",
443
+ providerAccountId: userData.id
444
+ };
445
+ const user = await userService.createUser({
446
+ ...userInformation,
447
+ provider: [userProvider]
448
+ });
449
+ await sessionAuthService.setUserAuth(res, user);
450
+ import_logger.logger.info(
451
+ `GitHub login - User: Name: ${user.name}, id: ${String(user._id)}`
452
+ );
453
+ await (0, import_email.sendEmail)({
454
+ type: "welcome",
455
+ to: user.email,
456
+ username: user.name,
457
+ loginLink: import_sessionAuth.sessionAuthRoutes.loginEmailPassword.url
458
+ });
459
+ res.redirect(redirect_uri);
460
+ } catch (error) {
461
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
462
+ return;
463
+ }
464
+ };
465
+ const googleLoginQuery = (req, res, _next) => {
466
+ const { origin } = req.query;
467
+ const { user } = res.locals;
468
+ if (user) {
469
+ const errorMessage = `User already logged in - ${user?.email}`;
470
+ import_logger.logger.error(errorMessage);
471
+ res.redirect(origin);
472
+ return;
473
+ }
474
+ const responseType = "code";
475
+ const scope = [
476
+ "https%3A//www.googleapis.com/auth/userinfo.email",
477
+ "https%3A//www.googleapis.com/auth/userinfo.profile"
478
+ ].join(" ");
479
+ const includeGrantedScopes = "false";
480
+ const encodedOrigin = encodeURIComponent(origin);
481
+ const state = JSON.stringify({ redirect_uri: encodedOrigin });
482
+ const redirectURI = `${process.env.BACKEND_URL}/api/auth/callback/google`;
483
+ res.redirect(
484
+ `https://accounts.google.com/o/oauth2/v2/auth?client_id=${process.env.GOOGLE_CLIENT_ID}&redirect_uri=${redirectURI}&response_type=${responseType}&scope=${scope}&include_granted_scopes=${includeGrantedScopes}&state=${state}`
485
+ );
486
+ };
487
+ const googleCallback = async (req, res, _next) => {
488
+ const { code, state } = req.query;
489
+ const decodedState = decodeURIComponent(state);
490
+ const { redirect_uri } = JSON.parse(decodedState);
491
+ if (!code) {
492
+ const errorMessage = "code not provided";
493
+ import_logger.logger.error(errorMessage);
494
+ const responseCode = import_httpStatusCodes.HttpStatusCodes.BAD_REQUEST_400;
495
+ res.redirect(responseCode, redirect_uri);
496
+ return;
497
+ }
498
+ if (!redirect_uri) {
499
+ const errorMessage = "Redirect URI not provided";
500
+ import_logger.logger.error(errorMessage);
501
+ const responseCode = import_httpStatusCodes.HttpStatusCodes.BAD_REQUEST_400;
502
+ res.redirect(responseCode, redirect_uri);
503
+ return;
504
+ }
505
+ try {
506
+ const tokenResponse = await fetch("https://oauth2.googleapis.com/token", {
507
+ method: "POST",
508
+ headers: {
509
+ "Content-Type": "application/x-www-form-urlencoded"
510
+ },
511
+ body: new URLSearchParams({
512
+ code,
513
+ redirect_uri: `${process.env.BACKEND_URL}/api/auth/callback/google`,
514
+ client_id: process.env.GOOGLE_CLIENT_ID,
515
+ client_secret: process.env.GOOGLE_CLIENT_SECRET,
516
+ grant_type: "authorization_code"
517
+ })
518
+ });
519
+ const responseData = await tokenResponse.json();
520
+ const { access_token: accessToken } = responseData;
521
+ if (!accessToken) {
522
+ const errorMessage = "Failed to fetch access_token";
523
+ import_logger.logger.error(errorMessage);
524
+ const responseCode = import_httpStatusCodes.HttpStatusCodes.INTERNAL_SERVER_ERROR_500;
525
+ res.redirect(responseCode, redirect_uri);
526
+ return;
527
+ }
528
+ const userResponse = await fetch(
529
+ "https://www.googleapis.com/oauth2/v3/userinfo",
530
+ {
531
+ method: "GET",
532
+ headers: {
533
+ Authorization: `Bearer ${accessToken}`
534
+ }
535
+ }
536
+ );
537
+ const userData = await userResponse.json();
538
+ if (!userData.email) {
539
+ const errorMessage = "Failed to fetch user data from Google";
540
+ import_logger.logger.error(errorMessage);
541
+ const responseCode = import_httpStatusCodes.HttpStatusCodes.INTERNAL_SERVER_ERROR_500;
542
+ res.redirect(responseCode, redirect_uri);
543
+ return;
544
+ }
545
+ let existingUser = await userService.getUserByEmail(userData.email);
546
+ if (existingUser) {
547
+ const existingProvider = await sessionAuthService.getUserProvider(
548
+ existingUser._id,
549
+ "google"
550
+ );
551
+ if (existingProvider?.providerAccountId !== userData.sub) {
552
+ const updatedUser2 = await sessionAuthService.updateUserProvider(
553
+ existingUser._id,
554
+ "google",
555
+ {
556
+ providerAccountId: userData.id
557
+ }
558
+ );
559
+ import_logger.logger.info(
560
+ `Google login provider updated - User: Name: ${updatedUser2.name}, id: ${String(updatedUser2._id)}`
561
+ );
562
+ if (updatedUser2) {
563
+ existingUser = updatedUser2;
564
+ }
565
+ }
566
+ const updatedUser = await userService.updateUserById(existingUser._id, {
567
+ name: existingUser.name ?? userData.name
568
+ });
569
+ await sessionAuthService.setUserAuth(res, updatedUser);
570
+ res.redirect(redirect_uri);
571
+ return;
572
+ }
573
+ const userInformation = {
574
+ name: userData.name,
575
+ email: userData.email
576
+ };
577
+ const userProvider = {
578
+ provider: "google",
579
+ providerAccountId: userData.id
580
+ };
581
+ const user = await userService.createUser({
582
+ ...userInformation,
583
+ provider: [userProvider]
584
+ });
585
+ await sessionAuthService.setUserAuth(res, user);
586
+ import_logger.logger.info(
587
+ `Google login - User: Name: ${user.name}, id: ${String(user._id)}`
588
+ );
589
+ await (0, import_email.sendEmail)({
590
+ type: "welcome",
591
+ to: user.email,
592
+ username: user.name,
593
+ loginLink: import_sessionAuth.sessionAuthRoutes.loginEmailPassword.url
594
+ });
595
+ } catch (error) {
596
+ import_errors.ErrorHandler.handleAppErrorResponse(res, error);
597
+ return;
598
+ }
599
+ };
600
+ // Annotate the CommonJS export names for ESM import in node:
601
+ 0 && (module.exports = {
602
+ askResetPassword,
603
+ getSessionInformation,
604
+ githubCallback,
605
+ githubLoginQuery,
606
+ googleCallback,
607
+ googleLoginQuery,
608
+ logOut,
609
+ loginEmailPassword,
610
+ registerEmailPassword,
611
+ resetPassword,
612
+ setCSRFToken,
613
+ updatePassword,
614
+ validEmail
615
+ });
616
+ //# sourceMappingURL=sessionAuth.controller.cjs.map