@webda/core 4.0.0-beta.1 → 4.0.0-beta.3

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 (675) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +437 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +792 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/hooks.d.ts +34 -0
  7. package/lib/application/hooks.d.ts.map +1 -0
  8. package/lib/application/hooks.js +57 -0
  9. package/lib/application/hooks.js.map +1 -0
  10. package/lib/application/iapplication.d.ts +43 -0
  11. package/lib/application/iapplication.d.ts.map +1 -0
  12. package/lib/application/iapplication.js +2 -0
  13. package/lib/application/iapplication.js.map +1 -0
  14. package/lib/application/iconfiguration.d.ts +176 -0
  15. package/lib/application/iconfiguration.d.ts.map +1 -0
  16. package/lib/application/iconfiguration.js +8 -0
  17. package/lib/application/iconfiguration.js.map +1 -0
  18. package/lib/application/runner.d.ts +8 -0
  19. package/lib/application/runner.d.ts.map +1 -0
  20. package/lib/application/runner.js +26 -0
  21. package/lib/application/runner.js.map +1 -0
  22. package/lib/application/unpackedapplication.d.ts +104 -0
  23. package/lib/application/unpackedapplication.d.ts.map +1 -0
  24. package/lib/application/unpackedapplication.js +492 -0
  25. package/lib/application/unpackedapplication.js.map +1 -0
  26. package/lib/bin/cli-phase.d.ts +28 -0
  27. package/lib/bin/cli-phase.d.ts.map +1 -0
  28. package/lib/bin/cli-phase.js +44 -0
  29. package/lib/bin/cli-phase.js.map +1 -0
  30. package/lib/bin/cli.d.ts +161 -0
  31. package/lib/bin/cli.d.ts.map +1 -0
  32. package/lib/bin/cli.js +828 -0
  33. package/lib/bin/cli.js.map +1 -0
  34. package/lib/bin/launcher.d.ts +3 -0
  35. package/lib/bin/launcher.d.ts.map +1 -0
  36. package/lib/bin/launcher.js +50 -0
  37. package/lib/bin/launcher.js.map +1 -0
  38. package/lib/cache/cache.d.ts +33 -0
  39. package/lib/cache/cache.d.ts.map +1 -0
  40. package/lib/cache/cache.js +8 -0
  41. package/lib/cache/cache.js.map +1 -0
  42. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
  43. package/lib/configurations/configuration.service.d.ts.map +1 -0
  44. package/lib/configurations/configuration.service.js +248 -0
  45. package/lib/configurations/configuration.service.js.map +1 -0
  46. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  47. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  48. package/lib/configurations/fileconfiguration.service.js +65 -0
  49. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  50. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  51. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  53. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  54. package/lib/contexts/execution.d.ts +33 -0
  55. package/lib/contexts/execution.d.ts.map +1 -0
  56. package/lib/contexts/execution.js +73 -0
  57. package/lib/contexts/execution.js.map +1 -0
  58. package/lib/contexts/globalcontext.d.ts +29 -0
  59. package/lib/contexts/globalcontext.d.ts.map +1 -0
  60. package/lib/contexts/globalcontext.js +38 -0
  61. package/lib/contexts/globalcontext.js.map +1 -0
  62. package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +102 -34
  65. package/lib/contexts/httpcontext.js.map +1 -0
  66. package/lib/contexts/icontext.d.ts +236 -0
  67. package/lib/contexts/icontext.d.ts.map +1 -0
  68. package/lib/contexts/icontext.js +230 -0
  69. package/lib/contexts/icontext.js.map +1 -0
  70. package/lib/contexts/operationcontext.d.ts +179 -0
  71. package/lib/contexts/operationcontext.d.ts.map +1 -0
  72. package/lib/contexts/operationcontext.js +358 -0
  73. package/lib/contexts/operationcontext.js.map +1 -0
  74. package/lib/contexts/simplecontext.d.ts +31 -0
  75. package/lib/contexts/simplecontext.d.ts.map +1 -0
  76. package/lib/contexts/simplecontext.js +45 -0
  77. package/lib/contexts/simplecontext.js.map +1 -0
  78. package/lib/contexts/webcontext.d.ts +218 -0
  79. package/lib/contexts/webcontext.d.ts.map +1 -0
  80. package/lib/contexts/webcontext.js +389 -0
  81. package/lib/contexts/webcontext.js.map +1 -0
  82. package/lib/core/authorizer.d.ts +23 -0
  83. package/lib/core/authorizer.d.ts.map +1 -0
  84. package/lib/core/authorizer.js +17 -0
  85. package/lib/core/authorizer.js.map +1 -0
  86. package/lib/core/core.d.ts +225 -0
  87. package/lib/core/core.d.ts.map +1 -0
  88. package/lib/core/core.js +576 -0
  89. package/lib/core/core.js.map +1 -0
  90. package/lib/core/hooks.d.ts +72 -0
  91. package/lib/core/hooks.d.ts.map +1 -0
  92. package/lib/core/hooks.js +73 -0
  93. package/lib/core/hooks.js.map +1 -0
  94. package/lib/core/icore.d.ts +249 -0
  95. package/lib/core/icore.d.ts.map +1 -0
  96. package/lib/core/icore.js +15 -0
  97. package/lib/core/icore.js.map +1 -0
  98. package/lib/core/instancestorage.d.ts +61 -0
  99. package/lib/core/instancestorage.d.ts.map +1 -0
  100. package/lib/core/instancestorage.js +75 -0
  101. package/lib/core/instancestorage.js.map +1 -0
  102. package/lib/core/operations.d.ts +181 -0
  103. package/lib/core/operations.d.ts.map +1 -0
  104. package/lib/core/operations.js +559 -0
  105. package/lib/core/operations.js.map +1 -0
  106. package/lib/errors/errors.d.ts +126 -0
  107. package/lib/errors/errors.d.ts.map +1 -0
  108. package/lib/errors/errors.js +165 -0
  109. package/lib/errors/errors.js.map +1 -0
  110. package/lib/events/asynceventemitter.d.ts +159 -0
  111. package/lib/events/asynceventemitter.d.ts.map +1 -0
  112. package/lib/events/asynceventemitter.js +152 -0
  113. package/lib/events/asynceventemitter.js.map +1 -0
  114. package/lib/events/events.d.ts +112 -0
  115. package/lib/events/events.d.ts.map +1 -0
  116. package/lib/events/events.js +45 -0
  117. package/lib/events/events.js.map +1 -0
  118. package/lib/index.d.ts +84 -51
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +82 -59
  121. package/lib/index.js.map +1 -1
  122. package/lib/loggers/console.service.d.ts +24 -0
  123. package/lib/loggers/console.service.d.ts.map +1 -0
  124. package/lib/loggers/console.service.js +30 -0
  125. package/lib/loggers/console.service.js.map +1 -0
  126. package/lib/loggers/file.service.d.ts +25 -0
  127. package/lib/loggers/file.service.d.ts.map +1 -0
  128. package/lib/loggers/file.service.js +33 -0
  129. package/lib/loggers/file.service.js.map +1 -0
  130. package/lib/loggers/hooks.d.ts +20 -0
  131. package/lib/loggers/hooks.d.ts.map +1 -0
  132. package/lib/loggers/hooks.js +40 -0
  133. package/lib/loggers/hooks.js.map +1 -0
  134. package/lib/loggers/ilogger.d.ts +76 -0
  135. package/lib/loggers/ilogger.d.ts.map +1 -0
  136. package/lib/loggers/ilogger.js +108 -0
  137. package/lib/loggers/ilogger.js.map +1 -0
  138. package/lib/loggers/logger.d.ts +13 -0
  139. package/lib/loggers/logger.d.ts.map +1 -0
  140. package/lib/loggers/logger.js +18 -0
  141. package/lib/loggers/logger.js.map +1 -0
  142. package/lib/loggers/memory.service.d.ts +18 -0
  143. package/lib/loggers/memory.service.d.ts.map +1 -0
  144. package/lib/loggers/memory.service.js +21 -0
  145. package/lib/loggers/memory.service.js.map +1 -0
  146. package/lib/loggers/params.d.ts +47 -0
  147. package/lib/loggers/params.d.ts.map +1 -0
  148. package/lib/loggers/params.js +56 -0
  149. package/lib/loggers/params.js.map +1 -0
  150. package/lib/metrics/metrics.d.ts +25 -0
  151. package/lib/metrics/metrics.d.ts.map +1 -0
  152. package/lib/metrics/metrics.js +51 -0
  153. package/lib/metrics/metrics.js.map +1 -0
  154. package/lib/models/aclmodel.d.ts +21 -77
  155. package/lib/models/aclmodel.d.ts.map +1 -0
  156. package/lib/models/aclmodel.js +27 -204
  157. package/lib/models/aclmodel.js.map +1 -1
  158. package/lib/models/coremodel.model.d.ts +5 -0
  159. package/lib/models/coremodel.model.d.ts.map +1 -0
  160. package/lib/models/coremodel.model.js +5 -0
  161. package/lib/models/coremodel.model.js.map +1 -0
  162. package/lib/models/decorator.d.ts +63 -0
  163. package/lib/models/decorator.d.ts.map +1 -0
  164. package/lib/models/decorator.js +63 -0
  165. package/lib/models/decorator.js.map +1 -0
  166. package/lib/models/deployment.d.ts +2 -1
  167. package/lib/models/deployment.d.ts.map +1 -0
  168. package/lib/models/ident.model.d.ts +89 -0
  169. package/lib/models/ident.model.d.ts.map +1 -0
  170. package/lib/models/ident.model.js +115 -0
  171. package/lib/models/ident.model.js.map +1 -0
  172. package/lib/models/ownermodel.model.d.ts +68 -0
  173. package/lib/models/ownermodel.model.d.ts.map +1 -0
  174. package/lib/models/ownermodel.model.js +112 -0
  175. package/lib/models/ownermodel.model.js.map +1 -0
  176. package/lib/models/registry.model.d.ts +76 -0
  177. package/lib/models/registry.model.d.ts.map +1 -0
  178. package/lib/models/registry.model.js +104 -0
  179. package/lib/models/registry.model.js.map +1 -0
  180. package/lib/models/rolemodel.model.d.ts +28 -0
  181. package/lib/models/rolemodel.model.d.ts.map +1 -0
  182. package/lib/models/rolemodel.model.js +53 -0
  183. package/lib/models/rolemodel.model.js.map +1 -0
  184. package/lib/models/simpleuser.model.d.ts +78 -0
  185. package/lib/models/simpleuser.model.d.ts.map +1 -0
  186. package/lib/models/simpleuser.model.js +123 -0
  187. package/lib/models/simpleuser.model.js.map +1 -0
  188. package/lib/models/types.d.ts +113 -0
  189. package/lib/models/types.d.ts.map +1 -0
  190. package/lib/models/types.js +2 -0
  191. package/lib/models/types.js.map +1 -0
  192. package/lib/models/user.model.d.ts +103 -0
  193. package/lib/models/user.model.d.ts.map +1 -0
  194. package/lib/models/user.model.js +125 -0
  195. package/lib/models/user.model.js.map +1 -0
  196. package/lib/queues/memoryqueue.service.d.ts +72 -0
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/memoryqueue.service.js +136 -0
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +9 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -0
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +10 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -0
  206. package/lib/queues/queueservice.js +48 -20
  207. package/lib/queues/queueservice.js.map +1 -1
  208. package/lib/rest/hooks.d.ts +8 -0
  209. package/lib/rest/hooks.d.ts.map +1 -0
  210. package/lib/rest/hooks.js +10 -0
  211. package/lib/rest/hooks.js.map +1 -0
  212. package/lib/rest/irest.d.ts +212 -0
  213. package/lib/rest/irest.d.ts.map +1 -0
  214. package/lib/rest/irest.js +39 -0
  215. package/lib/rest/irest.js.map +1 -0
  216. package/lib/rest/originfilter.d.ts +38 -0
  217. package/lib/rest/originfilter.d.ts.map +1 -0
  218. package/lib/rest/originfilter.js +61 -0
  219. package/lib/rest/originfilter.js.map +1 -0
  220. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  221. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  222. package/lib/rest/restoperationstransport.service.js +780 -0
  223. package/lib/rest/restoperationstransport.service.js.map +1 -0
  224. package/lib/rest/router.service.d.ts +244 -0
  225. package/lib/rest/router.service.d.ts.map +1 -0
  226. package/lib/rest/router.service.js +843 -0
  227. package/lib/rest/router.service.js.map +1 -0
  228. package/lib/schemas/hooks.d.ts +48 -0
  229. package/lib/schemas/hooks.d.ts.map +1 -0
  230. package/lib/schemas/hooks.js +152 -0
  231. package/lib/schemas/hooks.js.map +1 -0
  232. package/lib/services/audit.model.d.ts +208 -0
  233. package/lib/services/audit.model.d.ts.map +1 -0
  234. package/lib/services/audit.model.js +431 -0
  235. package/lib/services/audit.model.js.map +1 -0
  236. package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
  237. package/lib/services/authentication.service.d.ts.map +1 -0
  238. package/lib/services/authentication.service.js +932 -0
  239. package/lib/services/authentication.service.js.map +1 -0
  240. package/lib/services/binary.service.d.ts +808 -0
  241. package/lib/services/binary.service.d.ts.map +1 -0
  242. package/lib/services/binary.service.js +1365 -0
  243. package/lib/services/binary.service.js.map +1 -0
  244. package/lib/services/cloudbinary.d.ts +19 -13
  245. package/lib/services/cloudbinary.d.ts.map +1 -0
  246. package/lib/services/cloudbinary.js +24 -18
  247. package/lib/services/cloudbinary.js.map +1 -1
  248. package/lib/services/command.d.ts +118 -0
  249. package/lib/services/command.d.ts.map +1 -0
  250. package/lib/services/command.js +97 -0
  251. package/lib/services/command.js.map +1 -0
  252. package/lib/services/cron.service.d.ts +142 -0
  253. package/lib/services/cron.service.d.ts.map +1 -0
  254. package/lib/services/cron.service.js +291 -0
  255. package/lib/services/cron.service.js.map +1 -0
  256. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
  257. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  258. package/lib/services/cryptoservice.service.js +527 -0
  259. package/lib/services/cryptoservice.service.js.map +1 -0
  260. package/lib/services/debugmailer.service.d.ts +49 -0
  261. package/lib/services/debugmailer.service.d.ts.map +1 -0
  262. package/lib/services/debugmailer.service.js +66 -0
  263. package/lib/services/debugmailer.service.js.map +1 -0
  264. package/lib/services/domainservice.service.d.ts +203 -0
  265. package/lib/services/domainservice.service.d.ts.map +1 -0
  266. package/lib/services/domainservice.service.js +600 -0
  267. package/lib/services/domainservice.service.js.map +1 -0
  268. package/lib/services/httpserver.service.d.ts +248 -0
  269. package/lib/services/httpserver.service.d.ts.map +1 -0
  270. package/lib/services/httpserver.service.js +673 -0
  271. package/lib/services/httpserver.service.js.map +1 -0
  272. package/lib/services/iauthentication.d.ts +9 -0
  273. package/lib/services/iauthentication.d.ts.map +1 -0
  274. package/lib/services/iauthentication.js +2 -0
  275. package/lib/services/iauthentication.js.map +1 -0
  276. package/lib/services/icryptoservice.d.ts +127 -0
  277. package/lib/services/icryptoservice.d.ts.map +1 -0
  278. package/lib/services/icryptoservice.js +68 -0
  279. package/lib/services/icryptoservice.js.map +1 -0
  280. package/lib/services/imailer.d.ts +17 -0
  281. package/lib/services/imailer.d.ts.map +1 -0
  282. package/lib/services/imailer.js +2 -0
  283. package/lib/services/imailer.js.map +1 -0
  284. package/lib/services/iservice.d.ts +104 -0
  285. package/lib/services/iservice.d.ts.map +1 -0
  286. package/lib/services/iservice.js +63 -0
  287. package/lib/services/iservice.js.map +1 -0
  288. package/lib/services/mailer.service.d.ts +220 -0
  289. package/lib/services/mailer.service.d.ts.map +1 -0
  290. package/lib/services/mailer.service.js +251 -0
  291. package/lib/services/mailer.service.js.map +1 -0
  292. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
  293. package/lib/services/notificationservice.service.d.ts.map +1 -0
  294. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  295. package/lib/services/notificationservice.service.js.map +1 -0
  296. package/lib/services/oauth.d.ts +58 -31
  297. package/lib/services/oauth.d.ts.map +1 -0
  298. package/lib/services/oauth.js +365 -251
  299. package/lib/services/oauth.js.map +1 -1
  300. package/lib/services/operationstransport.d.ts +65 -0
  301. package/lib/services/operationstransport.d.ts.map +1 -0
  302. package/lib/services/operationstransport.js +103 -0
  303. package/lib/services/operationstransport.js.map +1 -0
  304. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
  305. package/lib/services/prometheus.service.d.ts.map +1 -0
  306. package/lib/services/prometheus.service.js +203 -0
  307. package/lib/services/prometheus.service.js.map +1 -0
  308. package/lib/services/resource.service.d.ts +121 -0
  309. package/lib/services/resource.service.d.ts.map +1 -0
  310. package/lib/services/resource.service.js +301 -0
  311. package/lib/services/resource.service.js.map +1 -0
  312. package/lib/services/service.d.ts +88 -189
  313. package/lib/services/service.d.ts.map +1 -0
  314. package/lib/services/service.js +407 -432
  315. package/lib/services/service.js.map +1 -1
  316. package/lib/services/servicecommands.d.ts +99 -0
  317. package/lib/services/servicecommands.d.ts.map +1 -0
  318. package/lib/services/servicecommands.js +165 -0
  319. package/lib/services/servicecommands.js.map +1 -0
  320. package/lib/services/serviceparameters.d.ts +33 -0
  321. package/lib/services/serviceparameters.d.ts.map +1 -0
  322. package/lib/services/serviceparameters.js +79 -0
  323. package/lib/services/serviceparameters.js.map +1 -0
  324. package/lib/{utils → session}/cookie.d.ts +32 -18
  325. package/lib/session/cookie.d.ts.map +1 -0
  326. package/lib/{utils → session}/cookie.js +76 -23
  327. package/lib/session/cookie.js.map +1 -0
  328. package/lib/session/manager.model.d.ts +71 -0
  329. package/lib/session/manager.model.d.ts.map +1 -0
  330. package/lib/session/manager.model.js +155 -0
  331. package/lib/session/manager.model.js.map +1 -0
  332. package/lib/session/session.d.ts +57 -0
  333. package/lib/session/session.d.ts.map +1 -0
  334. package/lib/session/session.js +126 -0
  335. package/lib/session/session.js.map +1 -0
  336. package/lib/stores/istore.d.ts +99 -0
  337. package/lib/stores/istore.d.ts.map +1 -0
  338. package/lib/stores/istore.js +26 -0
  339. package/lib/stores/istore.js.map +1 -0
  340. package/lib/stores/memory.service.d.ts +114 -0
  341. package/lib/stores/memory.service.d.ts.map +1 -0
  342. package/lib/stores/memory.service.js +343 -0
  343. package/lib/stores/memory.service.js.map +1 -0
  344. package/lib/stores/store.d.ts +127 -768
  345. package/lib/stores/store.d.ts.map +1 -0
  346. package/lib/stores/store.js +258 -1718
  347. package/lib/stores/store.js.map +1 -1
  348. package/lib/templates/templates.d.ts +39 -0
  349. package/lib/templates/templates.d.ts.map +1 -0
  350. package/lib/templates/templates.js +92 -0
  351. package/lib/templates/templates.js.map +1 -0
  352. package/lib/test/application.d.ts +174 -0
  353. package/lib/test/application.d.ts.map +1 -0
  354. package/lib/test/application.js +288 -0
  355. package/lib/test/application.js.map +1 -0
  356. package/lib/test/asyncstorage.d.ts +16 -0
  357. package/lib/test/asyncstorage.d.ts.map +1 -0
  358. package/lib/test/asyncstorage.js +32 -0
  359. package/lib/test/asyncstorage.js.map +1 -0
  360. package/lib/test/core.d.ts +63 -0
  361. package/lib/test/core.d.ts.map +1 -0
  362. package/lib/test/core.js +190 -0
  363. package/lib/test/core.js.map +1 -0
  364. package/lib/test/index.d.ts +7 -0
  365. package/lib/test/index.d.ts.map +1 -0
  366. package/lib/test/index.js +8 -0
  367. package/lib/test/index.js.map +1 -0
  368. package/lib/test/internal.d.ts +34 -0
  369. package/lib/test/internal.d.ts.map +1 -0
  370. package/lib/test/internal.js +156 -0
  371. package/lib/test/internal.js.map +1 -0
  372. package/lib/test/objects.d.ts +318 -0
  373. package/lib/test/objects.d.ts.map +1 -0
  374. package/lib/test/objects.js +443 -0
  375. package/lib/test/objects.js.map +1 -0
  376. package/lib/utils/abstractdeployer.d.ts +5 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -0
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -56
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +6 -99
  384. package/test/data/.env +1 -0
  385. package/test/my-cnf.json +9 -0
  386. package/webda.module.json +3462 -2231
  387. package/lib/application.d.ts +0 -876
  388. package/lib/application.js +0 -741
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -1
  391. package/lib/application.spec.js +0 -234
  392. package/lib/application.spec.js.map +0 -1
  393. package/lib/core.d.ts +0 -740
  394. package/lib/core.js +0 -1310
  395. package/lib/core.js.map +0 -1
  396. package/lib/core.spec.d.ts +0 -1
  397. package/lib/core.spec.js +0 -761
  398. package/lib/core.spec.js.map +0 -1
  399. package/lib/errors.d.ts +0 -65
  400. package/lib/errors.js +0 -113
  401. package/lib/errors.js.map +0 -1
  402. package/lib/errors.spec.d.ts +0 -1
  403. package/lib/errors.spec.js +0 -33
  404. package/lib/errors.spec.js.map +0 -1
  405. package/lib/models/aclmodel.spec.d.ts +0 -1
  406. package/lib/models/aclmodel.spec.js +0 -187
  407. package/lib/models/aclmodel.spec.js.map +0 -1
  408. package/lib/models/coremodel.d.ts +0 -887
  409. package/lib/models/coremodel.js +0 -1208
  410. package/lib/models/coremodel.js.map +0 -1
  411. package/lib/models/coremodel.spec.d.ts +0 -1
  412. package/lib/models/coremodel.spec.js +0 -462
  413. package/lib/models/coremodel.spec.js.map +0 -1
  414. package/lib/models/ident.d.ts +0 -53
  415. package/lib/models/ident.js +0 -40
  416. package/lib/models/ident.js.map +0 -1
  417. package/lib/models/ident.spec.d.ts +0 -1
  418. package/lib/models/ident.spec.js +0 -43
  419. package/lib/models/ident.spec.js.map +0 -1
  420. package/lib/models/ownermodel.d.ts +0 -50
  421. package/lib/models/ownermodel.js +0 -65
  422. package/lib/models/ownermodel.js.map +0 -1
  423. package/lib/models/ownermodel.spec.d.ts +0 -1
  424. package/lib/models/ownermodel.spec.js +0 -191
  425. package/lib/models/ownermodel.spec.js.map +0 -1
  426. package/lib/models/relations.d.ts +0 -181
  427. package/lib/models/relations.js +0 -157
  428. package/lib/models/relations.js.map +0 -1
  429. package/lib/models/relations.spec.d.ts +0 -12
  430. package/lib/models/relations.spec.js +0 -224
  431. package/lib/models/relations.spec.js.map +0 -1
  432. package/lib/models/rolemodel.d.ts +0 -10
  433. package/lib/models/rolemodel.js +0 -35
  434. package/lib/models/rolemodel.js.map +0 -1
  435. package/lib/models/rolemodel.spec.d.ts +0 -1
  436. package/lib/models/rolemodel.spec.js +0 -86
  437. package/lib/models/rolemodel.spec.js.map +0 -1
  438. package/lib/models/user.d.ts +0 -100
  439. package/lib/models/user.js +0 -157
  440. package/lib/models/user.js.map +0 -1
  441. package/lib/models/user.spec.d.ts +0 -1
  442. package/lib/models/user.spec.js +0 -88
  443. package/lib/models/user.spec.js.map +0 -1
  444. package/lib/queues/filequeue.d.ts +0 -58
  445. package/lib/queues/filequeue.js +0 -131
  446. package/lib/queues/filequeue.js.map +0 -1
  447. package/lib/queues/filequeue.spec.d.ts +0 -1
  448. package/lib/queues/filequeue.spec.js +0 -78
  449. package/lib/queues/filequeue.spec.js.map +0 -1
  450. package/lib/queues/memoryqueue.d.ts +0 -45
  451. package/lib/queues/memoryqueue.js +0 -81
  452. package/lib/queues/memoryqueue.js.map +0 -1
  453. package/lib/queues/memoryqueue.spec.d.ts +0 -1
  454. package/lib/queues/memoryqueue.spec.js +0 -192
  455. package/lib/queues/memoryqueue.spec.js.map +0 -1
  456. package/lib/queues/queue.spec.d.ts +0 -5
  457. package/lib/queues/queue.spec.js +0 -55
  458. package/lib/queues/queue.spec.js.map +0 -1
  459. package/lib/router.d.ts +0 -172
  460. package/lib/router.js +0 -419
  461. package/lib/router.js.map +0 -1
  462. package/lib/router.spec.d.ts +0 -1
  463. package/lib/router.spec.js +0 -229
  464. package/lib/router.spec.js.map +0 -1
  465. package/lib/services/asyncevents.d.ts +0 -151
  466. package/lib/services/asyncevents.js +0 -217
  467. package/lib/services/asyncevents.js.map +0 -1
  468. package/lib/services/asyncevents.spec.d.ts +0 -1
  469. package/lib/services/asyncevents.spec.js +0 -118
  470. package/lib/services/asyncevents.spec.js.map +0 -1
  471. package/lib/services/authentication.js +0 -772
  472. package/lib/services/authentication.js.map +0 -1
  473. package/lib/services/authentication.spec.d.ts +0 -1
  474. package/lib/services/authentication.spec.js +0 -458
  475. package/lib/services/authentication.spec.js.map +0 -1
  476. package/lib/services/binary.d.ts +0 -549
  477. package/lib/services/binary.js +0 -986
  478. package/lib/services/binary.js.map +0 -1
  479. package/lib/services/binary.spec.d.ts +0 -44
  480. package/lib/services/binary.spec.js +0 -438
  481. package/lib/services/binary.spec.js.map +0 -1
  482. package/lib/services/cloudbinary.spec.d.ts +0 -13
  483. package/lib/services/cloudbinary.spec.js +0 -192
  484. package/lib/services/cloudbinary.spec.js.map +0 -1
  485. package/lib/services/configuration.js +0 -178
  486. package/lib/services/configuration.js.map +0 -1
  487. package/lib/services/configuration.spec.d.ts +0 -1
  488. package/lib/services/configuration.spec.js +0 -87
  489. package/lib/services/configuration.spec.js.map +0 -1
  490. package/lib/services/cron.d.ts +0 -73
  491. package/lib/services/cron.js +0 -141
  492. package/lib/services/cron.js.map +0 -1
  493. package/lib/services/cron.spec.d.ts +0 -1
  494. package/lib/services/cron.spec.js +0 -76
  495. package/lib/services/cron.spec.js.map +0 -1
  496. package/lib/services/cryptoservice.js +0 -434
  497. package/lib/services/cryptoservice.js.map +0 -1
  498. package/lib/services/cryptoservice.spec.d.ts +0 -1
  499. package/lib/services/cryptoservice.spec.js +0 -177
  500. package/lib/services/cryptoservice.spec.js.map +0 -1
  501. package/lib/services/debugmailer.d.ts +0 -36
  502. package/lib/services/debugmailer.js +0 -52
  503. package/lib/services/debugmailer.js.map +0 -1
  504. package/lib/services/debugmailer.spec.d.ts +0 -1
  505. package/lib/services/debugmailer.spec.js +0 -29
  506. package/lib/services/debugmailer.spec.js.map +0 -1
  507. package/lib/services/domainservice.d.ts +0 -152
  508. package/lib/services/domainservice.js +0 -881
  509. package/lib/services/domainservice.js.map +0 -1
  510. package/lib/services/domainservice.spec.d.ts +0 -1
  511. package/lib/services/domainservice.spec.js +0 -401
  512. package/lib/services/domainservice.spec.js.map +0 -1
  513. package/lib/services/filebinary.d.ts +0 -133
  514. package/lib/services/filebinary.js +0 -371
  515. package/lib/services/filebinary.js.map +0 -1
  516. package/lib/services/filebinary.spec.d.ts +0 -21
  517. package/lib/services/filebinary.spec.js +0 -415
  518. package/lib/services/filebinary.spec.js.map +0 -1
  519. package/lib/services/fileconfiguration.d.ts +0 -22
  520. package/lib/services/fileconfiguration.js +0 -48
  521. package/lib/services/fileconfiguration.js.map +0 -1
  522. package/lib/services/fileconfiguration.spec.d.ts +0 -1
  523. package/lib/services/fileconfiguration.spec.js +0 -177
  524. package/lib/services/fileconfiguration.spec.js.map +0 -1
  525. package/lib/services/invitationservice.d.ts +0 -222
  526. package/lib/services/invitationservice.js +0 -526
  527. package/lib/services/invitationservice.js.map +0 -1
  528. package/lib/services/invitationservice.spec.d.ts +0 -1
  529. package/lib/services/invitationservice.spec.js +0 -516
  530. package/lib/services/invitationservice.spec.js.map +0 -1
  531. package/lib/services/kubernetesconfiguration.d.ts +0 -26
  532. package/lib/services/kubernetesconfiguration.js +0 -54
  533. package/lib/services/kubernetesconfiguration.js.map +0 -1
  534. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
  535. package/lib/services/kubernetesconfiguration.spec.js +0 -147
  536. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  537. package/lib/services/mailer.d.ts +0 -165
  538. package/lib/services/mailer.js +0 -176
  539. package/lib/services/mailer.js.map +0 -1
  540. package/lib/services/mailer.spec.d.ts +0 -1
  541. package/lib/services/mailer.spec.js +0 -144
  542. package/lib/services/mailer.spec.js.map +0 -1
  543. package/lib/services/notificationservice.js.map +0 -1
  544. package/lib/services/notificationservice.spec.d.ts +0 -1
  545. package/lib/services/notificationservice.spec.js +0 -78
  546. package/lib/services/notificationservice.spec.js.map +0 -1
  547. package/lib/services/oauth.spec.d.ts +0 -1
  548. package/lib/services/oauth.spec.js +0 -184
  549. package/lib/services/oauth.spec.js.map +0 -1
  550. package/lib/services/prometheus.js +0 -160
  551. package/lib/services/prometheus.js.map +0 -1
  552. package/lib/services/prometheus.spec.d.ts +0 -1
  553. package/lib/services/prometheus.spec.js +0 -57
  554. package/lib/services/prometheus.spec.js.map +0 -1
  555. package/lib/services/resource.d.ts +0 -87
  556. package/lib/services/resource.js +0 -156
  557. package/lib/services/resource.js.map +0 -1
  558. package/lib/services/resource.spec.d.ts +0 -1
  559. package/lib/services/resource.spec.js +0 -122
  560. package/lib/services/resource.spec.js.map +0 -1
  561. package/lib/services/service.spec.d.ts +0 -1
  562. package/lib/services/service.spec.js +0 -268
  563. package/lib/services/service.spec.js.map +0 -1
  564. package/lib/stores/aggregator.d.ts +0 -41
  565. package/lib/stores/aggregator.js +0 -80
  566. package/lib/stores/aggregator.js.map +0 -1
  567. package/lib/stores/aliasstore.d.ts +0 -108
  568. package/lib/stores/aliasstore.js +0 -168
  569. package/lib/stores/aliasstore.js.map +0 -1
  570. package/lib/stores/aliasstore.spec.d.ts +0 -11
  571. package/lib/stores/aliasstore.spec.js +0 -89
  572. package/lib/stores/aliasstore.spec.js.map +0 -1
  573. package/lib/stores/file.d.ts +0 -107
  574. package/lib/stores/file.js +0 -188
  575. package/lib/stores/file.js.map +0 -1
  576. package/lib/stores/file.spec.d.ts +0 -19
  577. package/lib/stores/file.spec.js +0 -232
  578. package/lib/stores/file.spec.js.map +0 -1
  579. package/lib/stores/mapper.d.ts +0 -149
  580. package/lib/stores/mapper.js +0 -293
  581. package/lib/stores/mapper.js.map +0 -1
  582. package/lib/stores/mapper.spec.d.ts +0 -1
  583. package/lib/stores/mapper.spec.js +0 -160
  584. package/lib/stores/mapper.spec.js.map +0 -1
  585. package/lib/stores/memory.d.ts +0 -151
  586. package/lib/stores/memory.js +0 -371
  587. package/lib/stores/memory.js.map +0 -1
  588. package/lib/stores/memory.spec.d.ts +0 -20
  589. package/lib/stores/memory.spec.js +0 -328
  590. package/lib/stores/memory.spec.js.map +0 -1
  591. package/lib/stores/modelmapper.d.ts +0 -61
  592. package/lib/stores/modelmapper.js +0 -199
  593. package/lib/stores/modelmapper.js.map +0 -1
  594. package/lib/stores/store.spec.d.ts +0 -65
  595. package/lib/stores/store.spec.js +0 -906
  596. package/lib/stores/store.spec.js.map +0 -1
  597. package/lib/test.d.ts +0 -162
  598. package/lib/test.js +0 -399
  599. package/lib/test.js.map +0 -1
  600. package/lib/unpackedapplication.d.ts +0 -76
  601. package/lib/unpackedapplication.js +0 -299
  602. package/lib/unpackedapplication.js.map +0 -1
  603. package/lib/utils/abstractdeployer.spec.d.ts +0 -1
  604. package/lib/utils/abstractdeployer.spec.js +0 -21
  605. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  606. package/lib/utils/case.d.ts +0 -7
  607. package/lib/utils/case.js +0 -43
  608. package/lib/utils/case.js.map +0 -1
  609. package/lib/utils/case.spec.d.ts +0 -1
  610. package/lib/utils/case.spec.js +0 -50
  611. package/lib/utils/case.spec.js.map +0 -1
  612. package/lib/utils/context.d.ts +0 -462
  613. package/lib/utils/context.js +0 -732
  614. package/lib/utils/context.js.map +0 -1
  615. package/lib/utils/context.spec.d.ts +0 -9
  616. package/lib/utils/context.spec.js +0 -372
  617. package/lib/utils/context.spec.js.map +0 -1
  618. package/lib/utils/cookie.js.map +0 -1
  619. package/lib/utils/cookie.spec.d.ts +0 -1
  620. package/lib/utils/cookie.spec.js +0 -78
  621. package/lib/utils/cookie.spec.js.map +0 -1
  622. package/lib/utils/esm.d.ts +0 -13
  623. package/lib/utils/esm.js +0 -19
  624. package/lib/utils/esm.js.map +0 -1
  625. package/lib/utils/httpcontext.js.map +0 -1
  626. package/lib/utils/httpcontext.spec.d.ts +0 -4
  627. package/lib/utils/httpcontext.spec.js +0 -77
  628. package/lib/utils/httpcontext.spec.js.map +0 -1
  629. package/lib/utils/logger.d.ts +0 -91
  630. package/lib/utils/logger.js +0 -121
  631. package/lib/utils/logger.js.map +0 -1
  632. package/lib/utils/logger.spec.d.ts +0 -1
  633. package/lib/utils/logger.spec.js +0 -48
  634. package/lib/utils/logger.spec.js.map +0 -1
  635. package/lib/utils/serializers.d.ts +0 -161
  636. package/lib/utils/serializers.js +0 -420
  637. package/lib/utils/serializers.js.map +0 -1
  638. package/lib/utils/serializers.spec.d.ts +0 -1
  639. package/lib/utils/serializers.spec.js +0 -313
  640. package/lib/utils/serializers.spec.js.map +0 -1
  641. package/lib/utils/session.d.ts +0 -126
  642. package/lib/utils/session.js +0 -166
  643. package/lib/utils/session.js.map +0 -1
  644. package/lib/utils/session.spec.d.ts +0 -1
  645. package/lib/utils/session.spec.js +0 -71
  646. package/lib/utils/session.spec.js.map +0 -1
  647. package/lib/utils/throttler.d.ts +0 -102
  648. package/lib/utils/throttler.js +0 -168
  649. package/lib/utils/throttler.js.map +0 -1
  650. package/lib/utils/throttler.spec.d.ts +0 -1
  651. package/lib/utils/throttler.spec.js +0 -55
  652. package/lib/utils/throttler.spec.js.map +0 -1
  653. package/lib/utils/waiter.d.ts +0 -93
  654. package/lib/utils/waiter.js +0 -148
  655. package/lib/utils/waiter.js.map +0 -1
  656. package/lib/utils/waiter.spec.d.ts +0 -1
  657. package/lib/utils/waiter.spec.js +0 -98
  658. package/lib/utils/waiter.spec.js.map +0 -1
  659. package/test/config-file-missing-file-no-default.json +0 -44
  660. package/test/config-file-missing-file.json +0 -55
  661. package/test/config-file-no-reload.json +0 -69
  662. package/test/config-file-reload.json +0 -68
  663. package/test/config-invitation.json +0 -63
  664. package/test/config-kube-reload.json +0 -68
  665. package/test/config-reload.json +0 -66
  666. package/test/config.old.json +0 -152
  667. package/test/jsonutils/mdocs.yaml +0 -56
  668. package/test/jsonutils/test.json +0 -3
  669. package/test/jsonutils/test.yml +0 -5
  670. package/test/moddas/annotatedservice.js +0 -23
  671. package/test/moddas/debugmailer.js +0 -13
  672. package/test/moddas/fakeservice.js +0 -4
  673. package/test/moddas/voidstore.js +0 -66
  674. package/test/models/ident.js +0 -36
  675. package/test/models/task.js +0 -42
@@ -1,772 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import bcrypt from "bcryptjs";
8
- import { Counter } from "../core.js";
9
- import { WebdaError } from "../errors.js";
10
- import { Inject, Route, Service, ServiceParameters } from "../services/service.js";
11
- import { HttpContext } from "../utils/httpcontext.js";
12
- export class AuthenticationParameters extends ServiceParameters {
13
- constructor(params) {
14
- var _a, _b;
15
- super(params);
16
- this.identModel ?? (this.identModel = "Webda/Ident");
17
- this.userModel ?? (this.userModel = "Webda/User");
18
- this.url ?? (this.url = "/auth");
19
- this.password ?? (this.password = {
20
- regexp: ".{8,}"
21
- });
22
- if (this.email) {
23
- (_a = this.email).delay ?? (_a.delay = 3600000 * 4);
24
- (_b = this.email).failedLoginBeforeDelay ?? (_b.failedLoginBeforeDelay = 3);
25
- }
26
- }
27
- }
28
- /**
29
- * This class is known as the Authentication module
30
- * It handles OAuth for several providers for now (Facebook, Google, Amazon, GitHub and Twitter)
31
- * It also handles email authentication with prevalidation or postvalidation of the email
32
- *
33
- * It requires two Store to work one `idents` and one `users`
34
- *
35
- * The parameters are
36
- * ```
37
- * providerName: {
38
- * clientID: '...',
39
- * clientSecret: '...',
40
- * scope: ''
41
- * },
42
- * email: {
43
- * postValidation: true|false // If postValidation=true, account created without email verification
44
- * }
45
- * url: 'url' // By default /auth
46
- * ```
47
- *
48
- * @category CoreServices
49
- * @WebdaModda
50
- */
51
- class Authentication extends Service {
52
- constructor() {
53
- super(...arguments);
54
- this.providers = new Set();
55
- }
56
- /**
57
- * Load the parameters for a service
58
- */
59
- loadParameters(params) {
60
- return new AuthenticationParameters(params);
61
- }
62
- /**
63
- * Get the user store
64
- * @returns
65
- */
66
- getUserStore() {
67
- return this._userModel.store();
68
- }
69
- /**
70
- * Get the user store
71
- * @returns
72
- */
73
- getIdentStore() {
74
- return this._identModel.store();
75
- }
76
- /**
77
- * @ignore
78
- * Setup the default routes
79
- */
80
- computeParameters() {
81
- super.computeParameters();
82
- this._identModel = this.getWebda().getModel(this.parameters.identModel);
83
- this._userModel = this.getWebda().getModel(this.parameters.userModel);
84
- if (this.parameters.password.verifier) {
85
- this._passwordVerifier = this.getService(this.parameters.password.verifier);
86
- }
87
- if (this.parameters.email && this.getMailMan() === undefined) {
88
- throw Error("email authentication requires a Mailer service");
89
- }
90
- // Add email provider
91
- if (this.parameters.email) {
92
- this.addProvider("email");
93
- this.addRoute("./email/{email}/recover", ["GET"], this._passwordRecoveryEmail, {
94
- get: {
95
- description: "The password reset process will be start",
96
- summary: "Start password recovery",
97
- operationId: "startEmailRecovery",
98
- responses: {
99
- "204": {
100
- description: ""
101
- },
102
- "404": {
103
- description: "Email does not exist"
104
- },
105
- "429": {
106
- description: "Recovery has been initiated in the last 4 hours"
107
- }
108
- }
109
- }
110
- });
111
- this.addRoute("./email/passwordRecovery", ["POST"], this._passwordRecovery, {
112
- post: {
113
- schemas: {
114
- input: {
115
- type: "object",
116
- properties: {
117
- token: {
118
- type: "string"
119
- },
120
- expire: {
121
- type: "number"
122
- },
123
- password: {
124
- type: "string"
125
- },
126
- login: {
127
- type: "string"
128
- }
129
- }
130
- }
131
- },
132
- description: "Reinit the password if we have the right token, expire",
133
- summary: "Reinit password",
134
- operationId: "reinitPassword",
135
- responses: {
136
- "204": {
137
- description: ""
138
- },
139
- "403": {
140
- description: "Wrong Token"
141
- }
142
- }
143
- }
144
- });
145
- this.addRoute("./email", ["POST"], this._handleEmail, {
146
- post: {
147
- description: "Authenticate with an email and password",
148
- summary: "Authenticate with email",
149
- operationId: `authWithEmail`
150
- }
151
- });
152
- }
153
- }
154
- /**
155
- * @override
156
- */
157
- initMetrics() {
158
- super.initMetrics();
159
- this.metrics.login = this.getMetric(Counter, {
160
- name: "auth_login",
161
- help: "Counter number of login per provider",
162
- labelNames: ["provider"]
163
- });
164
- this.metrics.logout = this.getMetric(Counter, {
165
- name: "auth_logout",
166
- help: "Counter number of logout"
167
- });
168
- this.metrics.registration = this.getMetric(Counter, {
169
- name: "auth_registration",
170
- help: "Counter number of registration per provider",
171
- labelNames: ["provider"]
172
- });
173
- if (this.parameters.email) {
174
- this.metrics.loginFailed = this.getMetric(Counter, {
175
- name: "auth_login_failed",
176
- help: "Counter number of login failed with password"
177
- });
178
- this.metrics.recovery = this.getMetric(Counter, {
179
- name: "auth_login_recovery",
180
- help: "Counter number of password lost process initiated"
181
- });
182
- this.metrics.recovered = this.getMetric(Counter, {
183
- name: "auth_login_recovered",
184
- help: "Counter number of password lost process successful"
185
- });
186
- }
187
- }
188
- /**
189
- * Add a provider to the oauth scheme
190
- * @param name
191
- */
192
- addProvider(name) {
193
- this.providers.add(name);
194
- }
195
- /**
196
- * Ensure email is enabled for all emails routes
197
- * @override
198
- */
199
- getUrl(url, methods) {
200
- if (url.startsWith("./emails") && !this.parameters.email) {
201
- return undefined;
202
- }
203
- return super.getUrl(url, methods);
204
- }
205
- /**
206
- * Send or resend an email to validate the email address
207
- *
208
- * @param ctx
209
- * @throws 409 if ident is linked to someone else
210
- * @throws 412 if the email is already validated
211
- * @throws 429 if a validation email has been sent recently
212
- */
213
- async _sendEmailValidation(ctx) {
214
- let identKey = ctx.parameters.email + "_email";
215
- let ident = await this._identModel.ref(identKey).get();
216
- if (!ident) {
217
- await this._identModel.ref(`${ctx.parameters.email}_email`).create({
218
- _lastValidationEmail: Date.now(),
219
- _type: "email"
220
- });
221
- }
222
- else {
223
- // If the ident is linked to someone else - might want to remove it
224
- if (ident.getUser() !== ctx.getCurrentUserId()) {
225
- throw new WebdaError.Conflict("Ident is linked to someone else");
226
- }
227
- // If the email is already validated
228
- if (ident._validation) {
229
- throw new WebdaError.PreconditionFailed("Email already validated");
230
- }
231
- //
232
- if (ident._lastValidationEmail >= Date.now() - this.parameters.email.delay) {
233
- throw new WebdaError.TooManyRequests("Email sent recently");
234
- }
235
- await this._identModel.ref(ident.getUuid()).setAttribute("_lastValidationEmail", Date.now());
236
- }
237
- await this.sendValidationEmail(ctx, ctx.parameters.email);
238
- }
239
- /**
240
- * Return current user
241
- * @param ctx
242
- */
243
- async _getMe(ctx) {
244
- let user = await ctx.getCurrentUser();
245
- if (user === undefined) {
246
- throw new WebdaError.NotFound("No user found");
247
- }
248
- await this.emitSync("Authentication.GetMe", {
249
- context: ctx,
250
- user
251
- });
252
- ctx.write(user);
253
- }
254
- /**
255
- * Handle both list of available authentication
256
- * and logout with method 'DELETE'
257
- *
258
- * @param ctx
259
- * @returns
260
- */
261
- async _listAuthentications(ctx) {
262
- if (ctx.getHttpContext().getMethod() === "DELETE") {
263
- await this.logout(ctx);
264
- this.metrics.logout.inc();
265
- ctx.write("GoodBye");
266
- return;
267
- }
268
- ctx.write(Array.from(this.providers));
269
- }
270
- async onIdentLogin(ctx, provider, identId, profile, tokens = undefined) {
271
- // Auto postifx with provider name
272
- const postfix = `_${provider}`;
273
- if (!identId.endsWith(postfix)) {
274
- identId += postfix;
275
- }
276
- let ident = await this._identModel.ref(identId).get();
277
- // Ident is known
278
- if (ident) {
279
- await this.login(ctx, ident.getUser().toString(), ident, provider);
280
- await ident.patch({
281
- _lastUsed: new Date(),
282
- __tokens: tokens
283
- });
284
- // Redirect to?
285
- return;
286
- }
287
- let user;
288
- if (profile.email) {
289
- ident = await this._identModel.ref(`${profile.email}_email`).get();
290
- }
291
- // If already login
292
- if (ctx.getCurrentUserId()) {
293
- user = await ctx.getCurrentUser();
294
- }
295
- else {
296
- // If an email in profile try to find the ident
297
- if (ident) {
298
- user = await this._userModel.ref(ident.getUser().toString()).get();
299
- }
300
- if (!user) {
301
- // If no user, register a new user automatically
302
- user = await this.registerUser(ctx, profile, identId);
303
- await user.save();
304
- }
305
- }
306
- if (profile.email && !ident) {
307
- // Save additional email
308
- await new this._identModel()
309
- .load({
310
- uuid: `${profile.email}_email`,
311
- provider: "email",
312
- _user: user.getUuid()
313
- }, true)
314
- .save();
315
- }
316
- // Work directly on ident argument
317
- ident = new this._identModel().load({
318
- uuid: identId,
319
- __profile: profile,
320
- __tokens: tokens,
321
- provider
322
- }, true);
323
- ident.setUser(user.uuid);
324
- ident._lastUsed = new Date();
325
- ident.setType(provider);
326
- await ident.save();
327
- ident.__new = true;
328
- await this.login(ctx, user, ident, provider);
329
- }
330
- /**
331
- * Create a new User with the link ident
332
- * @param ident
333
- */
334
- async createUserWithIdent(provider, identId, profile = {}) {
335
- if (await this._identModel.ref(`${identId}_${provider}`).exists()) {
336
- throw new Error("Ident is already known");
337
- }
338
- let ctx = await this._webda.newWebContext(new HttpContext("fake", "GET", "/"));
339
- // Pretend we logged in with the ident
340
- await this.onIdentLogin(ctx, provider, identId, profile);
341
- }
342
- async registerUser(ctx, data, identId, user = new this._userModel()) {
343
- user.load({
344
- email: data.email,
345
- locale: ctx.getLocale()
346
- }, true);
347
- this.metrics.registration.inc();
348
- await this.emitSync("Authentication.Register", {
349
- user: user,
350
- data: data,
351
- context: ctx,
352
- identId
353
- });
354
- return user;
355
- }
356
- async getPasswordRecoveryInfos(uuid, interval = this.parameters.email.delay) {
357
- const expire = Date.now() + interval;
358
- let user;
359
- if (typeof uuid === "string") {
360
- user = await this._userModel.ref(uuid).get();
361
- }
362
- else {
363
- user = uuid;
364
- }
365
- if (!user) {
366
- return undefined;
367
- }
368
- return {
369
- expire: expire,
370
- // Might want to add more alea not coming from the db to avoid exploitation of stolen db
371
- token: await this.cryptoService.hmac(user.uuid + expire + user.getPassword()),
372
- login: user.uuid
373
- };
374
- }
375
- /**
376
- * Manage password recovery
377
- * @param ctx
378
- */
379
- async _passwordRecoveryEmail(ctx) {
380
- let email = ctx.parameter("email");
381
- let ident = await this._identModel.ref(email + "_email").get();
382
- if (!ident) {
383
- throw new WebdaError.NotFound("Email not found");
384
- }
385
- let user = await this._userModel.ref(ident.getUser().toString()).get();
386
- // Dont allow to do too many request
387
- if (!user.lastPasswordRecoveryBefore(Date.now() - this.parameters.email.delay)) {
388
- throw new WebdaError.TooManyRequests("Password recovery already requested recently");
389
- }
390
- await user.patch({
391
- _lastPasswordRecovery: Date.now()
392
- }, null);
393
- this.metrics.recovery.inc();
394
- await this.sendRecoveryEmail(ctx, user, email);
395
- }
396
- async _verifyPassword(password, user) {
397
- if (this._passwordVerifier) {
398
- if (!(await this._passwordVerifier.validate(password, user))) {
399
- throw new WebdaError.BadRequest("Password does not match the policy");
400
- }
401
- return;
402
- }
403
- let regexp = new RegExp(this.parameters.password.regexp);
404
- if (regexp.exec(password) === null) {
405
- throw new WebdaError.BadRequest("Password does not match the policy");
406
- }
407
- }
408
- async _passwordRecovery(ctx) {
409
- let body = await ctx.getRequestBody();
410
- let user = await this._userModel.ref(body.login.toLowerCase()).get();
411
- if (!user) {
412
- throw new WebdaError.Forbidden("User not found");
413
- }
414
- if (!(await this.cryptoService.hmacVerify(body.login.toLowerCase() + body.expire + user.getPassword(), body.token))) {
415
- throw new WebdaError.Forbidden("Invalid token");
416
- }
417
- if (body.expire < Date.now()) {
418
- throw new WebdaError.Gone("Expired token");
419
- }
420
- await this._verifyPassword(body.password, user);
421
- let password = this.hashPassword(body.password);
422
- await user.patch({
423
- __password: password
424
- }, null);
425
- this.metrics.recovered.inc();
426
- await this.emitSync("Authentication.PasswordUpdate", {
427
- user,
428
- password,
429
- context: ctx
430
- });
431
- }
432
- /**
433
- * Callback to validate an email address
434
- * @param ctx
435
- * @returns
436
- */
437
- async _handleEmailCallback(ctx) {
438
- if (!(await this.cryptoService.hmacVerify(`${ctx.parameter("email")}_${ctx.parameter("user")}`, ctx.parameter("token")))) {
439
- ctx.writeHead(302, {
440
- Location: this.parameters.failureRedirect + "?reason=badToken"
441
- });
442
- return;
443
- }
444
- if (ctx.parameter("user") !== ctx.getCurrentUserId() &&
445
- ctx.getCurrentUserId() !== "" &&
446
- ctx.getCurrentUserId() !== undefined) {
447
- ctx.writeHead(302, {
448
- Location: this.parameters.failureRedirect + "?reason=badUser"
449
- });
450
- return;
451
- }
452
- if (!ctx.parameter("user")) {
453
- ctx.writeHead(302, {
454
- Location: `${this.parameters.registerRedirect}?token=${ctx.parameter("token")}&email=${ctx.parameter("email")}`
455
- });
456
- return;
457
- }
458
- const uuid = ctx.parameter("email") + "_email";
459
- let ident = await this._identModel.ref(uuid).get();
460
- // Would mean the ident got delete in the mean time... hyper low likely hood
461
- if (ident === undefined) {
462
- ident = new this._identModel().setUuid(uuid);
463
- }
464
- ident._type = "email";
465
- ident._validation = new Date();
466
- ident.setUser(ctx.parameter("user"));
467
- await ident.save();
468
- ctx.writeHead(302, {
469
- Location: this.parameters.successRedirect + "?validation=email",
470
- "X-Webda-Authentication": "success"
471
- });
472
- }
473
- /**
474
- * Send an email to recover the user password
475
- *
476
- * @param ctx
477
- * @param user
478
- * @param email
479
- * @returns
480
- */
481
- async sendRecoveryEmail(ctx, user, email) {
482
- let infos = await this.getPasswordRecoveryInfos(user);
483
- const mailer = this.getMailMan();
484
- let locale = user.locale || ctx.getLocale();
485
- let mailOptions = {
486
- to: email,
487
- locale: locale,
488
- template: "EMAIL_RECOVERY",
489
- replacements: {
490
- ...this.parameters.email,
491
- infos,
492
- to: email,
493
- context: ctx
494
- }
495
- };
496
- return mailer.send(mailOptions);
497
- }
498
- /**
499
- * Send an email to validate the user email by sending a unique link to
500
- * his email
501
- *
502
- * @param ctx
503
- * @param email
504
- * @returns
505
- */
506
- async sendValidationEmail(ctx, email) {
507
- const mailer = this.getMailMan();
508
- let replacements = {
509
- ...this.parameters.email,
510
- context: ctx,
511
- url: ctx
512
- .getHttpContext()
513
- .getAbsoluteUrl(`${this.parameters.url}/email/callback?email=${email}&token=${await this.generateEmailValidationToken(ctx.getCurrentUserId(), email)}`)
514
- };
515
- let userId = ctx.getCurrentUserId();
516
- if (userId && userId.length > 0) {
517
- replacements.url += "&user=" + userId;
518
- }
519
- let mailOptions = {
520
- to: email,
521
- locale: ctx.getLocale(),
522
- template: "EMAIL_REGISTER",
523
- replacements: replacements
524
- };
525
- return mailer.send(mailOptions);
526
- }
527
- /**
528
- * Check the password match the stored hash
529
- * @param hash generate prior by hashPassword
530
- * @param password as entered by the user
531
- */
532
- checkPassword(hash, pass) {
533
- return bcrypt.compareSync(pass, hash);
534
- }
535
- /**
536
- * Hash the password according to good practices
537
- *
538
- * @param pass to hash
539
- */
540
- hashPassword(pass) {
541
- return bcrypt.hashSync(pass, this.parameters.salt || 10);
542
- }
543
- /**
544
- * Logout user
545
- */
546
- async logout(ctx) {
547
- await this.emitSync("Authentication.Logout", {
548
- context: ctx
549
- });
550
- await ctx.newSession();
551
- }
552
- /**
553
- * Login a user
554
- *
555
- * @param ctx
556
- * @param user
557
- * @param ident
558
- * @returns
559
- */
560
- async login(ctx, user, ident, provider) {
561
- const event = {
562
- context: ctx,
563
- userId: "",
564
- identId: ident.uuid,
565
- ident
566
- };
567
- if (typeof user == "object") {
568
- event.userId = user.getUuid();
569
- event.user = user;
570
- }
571
- else {
572
- event.userId = user;
573
- }
574
- event.context = ctx;
575
- ctx.getSession().login(event.userId, event.identId);
576
- this.metrics.login.inc({ provider });
577
- return this.emitSync("Authentication.Login", event);
578
- }
579
- getMailMan() {
580
- return this.getService(this.parameters.email.mailer ? this.parameters.email.mailer : "Mailer");
581
- }
582
- /**
583
- * Handle a user login request
584
- *
585
- * @param ctx
586
- * @param ident
587
- */
588
- async handleLogin(ctx, ident) {
589
- let updates = {};
590
- let user = await this._userModel.ref(ident.getUser().toString()).get();
591
- // Check password
592
- if (this.checkPassword(user.getPassword(), (await ctx.getRequestBody()).password)) {
593
- if (ident._failedLogin > 0) {
594
- ident._failedLogin = 0;
595
- }
596
- updates._lastUsed = new Date();
597
- updates._failedLogin = 0;
598
- await this._identModel.ref(ident.uuid).patch(updates);
599
- await this.login(ctx, ident.getUser().toString(), ident, "email");
600
- ctx.write(user);
601
- }
602
- else {
603
- this.metrics.loginFailed.inc();
604
- await this.emitSync("Authentication.LoginFailed", {
605
- user,
606
- context: ctx
607
- });
608
- ident._failedLogin ?? (ident._failedLogin = 0);
609
- updates._failedLogin = ident._failedLogin + 1;
610
- updates._lastFailedLogin = new Date();
611
- // Swalow exeception issue to double check !
612
- await this._identModel.ref(ident.uuid).patch(updates);
613
- // Allows to auto redirect user to a oauth if needed
614
- // It can intercept the error and redirect to the oauth if
615
- // email match
616
- if (!ctx.isEnded()) {
617
- throw new WebdaError.Forbidden("Invalid password");
618
- }
619
- }
620
- }
621
- /**
622
- * Handle the POST /auth/email
623
- *
624
- * @param ctx
625
- * @returns
626
- */
627
- async _handleEmail(ctx) {
628
- // If called while logged in reject
629
- if (ctx.getCurrentUserId() !== undefined) {
630
- throw new WebdaError.Gone("Already logged in");
631
- }
632
- let body = await ctx.getRequestBody();
633
- const mailConfig = this.parameters.email;
634
- const uuid = body.login.toLowerCase() + "_email";
635
- let ident = await this._identModel.ref(uuid).get();
636
- if (ident !== undefined && ident.getUser() !== undefined) {
637
- // Register on an known user
638
- if (!body.register) {
639
- await this.handleLogin(ctx, ident);
640
- return;
641
- }
642
- // If register on a validate email
643
- if (ident._validation !== undefined) {
644
- throw new WebdaError.Conflict("Email already registered");
645
- }
646
- }
647
- // TODO Handle add of email on authenticated user
648
- const email = body.login.toLowerCase();
649
- // Read the form
650
- if (body.register) {
651
- let validation = undefined;
652
- // Need to check email before creation
653
- if (!mailConfig.postValidation) {
654
- if (body.token && (await this.cryptoService.hmacVerify(`${email}_${ctx.getCurrentUserId()}`, body.token))) {
655
- validation = new Date();
656
- }
657
- else {
658
- ctx.write({});
659
- // token is undefined send an email
660
- return this.sendValidationEmail(ctx, email);
661
- }
662
- }
663
- if (!body.password) {
664
- throw new WebdaError.BadRequest("Password is required");
665
- }
666
- // Store with a _
667
- let __password = this.hashPassword(body.password);
668
- await this._verifyPassword(body.password);
669
- // Remove useless attributes
670
- delete body.password;
671
- delete body.register;
672
- delete body.token;
673
- let user = await this.registerUser(ctx, {}, uuid, new this._userModel().load({
674
- ...body,
675
- __password
676
- }, true));
677
- await this.emitSync("Authentication.PasswordCreate", {
678
- user,
679
- password: __password,
680
- context: ctx
681
- });
682
- await user.save();
683
- const newIdent = new this._identModel().load({
684
- uuid: uuid,
685
- _type: "email",
686
- email: email
687
- }, true);
688
- newIdent.setUser(user.getUuid());
689
- if (validation) {
690
- newIdent._validation = validation;
691
- }
692
- else if (!mailConfig.skipEmailValidation) {
693
- newIdent._lastValidationEmail = Date.now();
694
- }
695
- ident = await newIdent.save();
696
- await this.login(ctx, user, ident, "email");
697
- ctx.write(user);
698
- if (!validation && !mailConfig.skipEmailValidation) {
699
- await this.sendValidationEmail(ctx, email);
700
- }
701
- return;
702
- }
703
- throw new WebdaError.NotFound("");
704
- }
705
- async generateEmailValidationToken(user, email) {
706
- return this.cryptoService.hmac(email + "_" + user);
707
- }
708
- }
709
- __decorate([
710
- Inject("CryptoService")
711
- ], Authentication.prototype, "cryptoService", void 0);
712
- __decorate([
713
- Route("./email/{email}/validate", ["GET"], {
714
- get: {
715
- description: "The email validation process will be start",
716
- summary: "Restart email validation",
717
- operationId: "startEmailRecovery",
718
- responses: {
719
- "204": {
720
- description: ""
721
- },
722
- "409": {
723
- description: "Email already verified for another user"
724
- },
725
- "412": {
726
- description: "Email already verified for current user"
727
- },
728
- "429": {
729
- description: "Validation has been initiated in the last 4 hours"
730
- }
731
- }
732
- }
733
- })
734
- ], Authentication.prototype, "_sendEmailValidation", null);
735
- __decorate([
736
- Route("./me", ["GET"], {
737
- get: {
738
- description: "Retrieve the current user from the session",
739
- summary: "Get current user",
740
- operationId: "getCurrentUser"
741
- }
742
- })
743
- ], Authentication.prototype, "_getMe", null);
744
- __decorate([
745
- Route(".", ["GET", "DELETE"], {
746
- get: {
747
- description: "Retrieve the list of available authentication",
748
- summary: "Get available auths",
749
- operationId: `getAuthenticationMethods`,
750
- responses: {
751
- "200": {
752
- description: "List of authentication"
753
- }
754
- }
755
- },
756
- delete: {
757
- description: "Logout current user",
758
- summary: "Logout",
759
- operationId: `logout`,
760
- responses: {
761
- "200": {}
762
- }
763
- }
764
- })
765
- ], Authentication.prototype, "_listAuthentications", null);
766
- __decorate([
767
- Route("./email/callback{?email,token,user?}", ["GET"], {
768
- hidden: true
769
- })
770
- ], Authentication.prototype, "_handleEmailCallback", null);
771
- export { Authentication };
772
- //# sourceMappingURL=authentication.js.map