@webda/core 2.4.1 → 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 (227) hide show
  1. package/lib/application.d.ts +171 -34
  2. package/lib/application.js +243 -47
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +44 -8
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +113 -54
  7. package/lib/core.js +222 -135
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +87 -43
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/errors.d.ts +65 -0
  12. package/lib/errors.js +113 -0
  13. package/lib/errors.js.map +1 -0
  14. package/lib/errors.spec.d.ts +1 -0
  15. package/lib/errors.spec.js +33 -0
  16. package/lib/errors.spec.js.map +1 -0
  17. package/lib/index.d.ts +3 -0
  18. package/lib/index.js +3 -0
  19. package/lib/index.js.map +1 -1
  20. package/lib/models/aclmodel.d.ts +4 -4
  21. package/lib/models/aclmodel.js +10 -6
  22. package/lib/models/aclmodel.js.map +1 -1
  23. package/lib/models/aclmodel.spec.js +33 -24
  24. package/lib/models/aclmodel.spec.js.map +1 -1
  25. package/lib/models/coremodel.d.ts +284 -92
  26. package/lib/models/coremodel.js +403 -103
  27. package/lib/models/coremodel.js.map +1 -1
  28. package/lib/models/coremodel.spec.js +162 -24
  29. package/lib/models/coremodel.spec.js.map +1 -1
  30. package/lib/models/ident.d.ts +20 -6
  31. package/lib/models/ident.js.map +1 -1
  32. package/lib/models/ownermodel.d.ts +13 -23
  33. package/lib/models/ownermodel.js +24 -51
  34. package/lib/models/ownermodel.js.map +1 -1
  35. package/lib/models/ownermodel.spec.js +23 -11
  36. package/lib/models/ownermodel.spec.js.map +1 -1
  37. package/lib/models/relations.d.ts +167 -0
  38. package/lib/models/relations.js +113 -0
  39. package/lib/models/relations.js.map +1 -0
  40. package/lib/models/rolemodel.d.ts +3 -3
  41. package/lib/models/rolemodel.js +6 -6
  42. package/lib/models/rolemodel.js.map +1 -1
  43. package/lib/models/rolemodel.spec.js +12 -12
  44. package/lib/models/rolemodel.spec.js.map +1 -1
  45. package/lib/models/user.d.ts +40 -24
  46. package/lib/models/user.js +74 -48
  47. package/lib/models/user.js.map +1 -1
  48. package/lib/models/user.spec.js +24 -4
  49. package/lib/models/user.spec.js.map +1 -1
  50. package/lib/queues/memoryqueue.spec.js +9 -5
  51. package/lib/queues/memoryqueue.spec.js.map +1 -1
  52. package/lib/queues/queueservice.js.map +1 -1
  53. package/lib/router.d.ts +17 -8
  54. package/lib/router.js +81 -9
  55. package/lib/router.js.map +1 -1
  56. package/lib/router.spec.js +89 -5
  57. package/lib/router.spec.js.map +1 -1
  58. package/lib/services/asyncevents.spec.js +4 -4
  59. package/lib/services/authentication.d.ts +21 -22
  60. package/lib/services/authentication.js +90 -109
  61. package/lib/services/authentication.js.map +1 -1
  62. package/lib/services/authentication.spec.js +51 -65
  63. package/lib/services/authentication.spec.js.map +1 -1
  64. package/lib/services/binary.d.ts +132 -31
  65. package/lib/services/binary.js +257 -72
  66. package/lib/services/binary.js.map +1 -1
  67. package/lib/services/binary.spec.d.ts +16 -6
  68. package/lib/services/binary.spec.js +44 -117
  69. package/lib/services/binary.spec.js.map +1 -1
  70. package/lib/services/cloudbinary.d.ts +9 -10
  71. package/lib/services/cloudbinary.js +14 -15
  72. package/lib/services/cloudbinary.js.map +1 -1
  73. package/lib/services/cloudbinary.spec.d.ts +2 -2
  74. package/lib/services/cloudbinary.spec.js +13 -12
  75. package/lib/services/cloudbinary.spec.js.map +1 -1
  76. package/lib/services/configuration.js +9 -9
  77. package/lib/services/configuration.js.map +1 -1
  78. package/lib/services/configuration.spec.js +5 -7
  79. package/lib/services/configuration.spec.js.map +1 -1
  80. package/lib/services/cron.spec.js +3 -4
  81. package/lib/services/cron.spec.js.map +1 -1
  82. package/lib/services/cryptoservice.d.ts +2 -2
  83. package/lib/services/cryptoservice.js +5 -2
  84. package/lib/services/cryptoservice.js.map +1 -1
  85. package/lib/services/domainservice.d.ts +113 -0
  86. package/lib/services/domainservice.js +357 -0
  87. package/lib/services/domainservice.js.map +1 -0
  88. package/lib/services/domainservice.spec.d.ts +1 -0
  89. package/lib/services/domainservice.spec.js +334 -0
  90. package/lib/services/domainservice.spec.js.map +1 -0
  91. package/lib/services/echo.d.ts +2 -2
  92. package/lib/services/echo.js.map +1 -1
  93. package/lib/services/echo.spec.js +9 -2
  94. package/lib/services/echo.spec.js.map +1 -1
  95. package/lib/services/filebinary.d.ts +13 -14
  96. package/lib/services/filebinary.js +79 -73
  97. package/lib/services/filebinary.js.map +1 -1
  98. package/lib/services/filebinary.spec.d.ts +5 -0
  99. package/lib/services/filebinary.spec.js +222 -11
  100. package/lib/services/filebinary.spec.js.map +1 -1
  101. package/lib/services/fileconfiguration.js +7 -7
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +23 -24
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/invitationservice.d.ts +11 -9
  106. package/lib/services/invitationservice.js +17 -23
  107. package/lib/services/invitationservice.js.map +1 -1
  108. package/lib/services/invitationservice.spec.js +43 -40
  109. package/lib/services/invitationservice.spec.js.map +1 -1
  110. package/lib/services/kubernetesconfiguration.js +12 -22
  111. package/lib/services/kubernetesconfiguration.js.map +1 -1
  112. package/lib/services/kubernetesconfiguration.spec.js +1 -6
  113. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  114. package/lib/services/mailer.js +1 -1
  115. package/lib/services/mailer.js.map +1 -1
  116. package/lib/services/mailer.spec.js +4 -1
  117. package/lib/services/mailer.spec.js.map +1 -1
  118. package/lib/services/oauth.d.ts +17 -9
  119. package/lib/services/oauth.js +30 -4
  120. package/lib/services/oauth.js.map +1 -1
  121. package/lib/services/oauth.spec.js +32 -15
  122. package/lib/services/oauth.spec.js.map +1 -1
  123. package/lib/services/prometheus.spec.js.map +1 -1
  124. package/lib/services/proxy.d.ts +9 -8
  125. package/lib/services/proxy.js +65 -36
  126. package/lib/services/proxy.js.map +1 -1
  127. package/lib/services/proxy.spec.js +28 -2
  128. package/lib/services/proxy.spec.js.map +1 -1
  129. package/lib/services/resource.d.ts +3 -3
  130. package/lib/services/resource.js +4 -3
  131. package/lib/services/resource.js.map +1 -1
  132. package/lib/services/resource.spec.js +3 -3
  133. package/lib/services/resource.spec.js.map +1 -1
  134. package/lib/services/service.d.ts +10 -13
  135. package/lib/services/service.js +29 -13
  136. package/lib/services/service.js.map +1 -1
  137. package/lib/services/service.spec.js +49 -11
  138. package/lib/services/service.spec.js.map +1 -1
  139. package/lib/services/version.d.ts +2 -2
  140. package/lib/services/version.js.map +1 -1
  141. package/lib/stores/aggregator.js +1 -0
  142. package/lib/stores/aggregator.js.map +1 -1
  143. package/lib/stores/aliasstore.d.ts +2 -2
  144. package/lib/stores/aliasstore.js +15 -4
  145. package/lib/stores/aliasstore.js.map +1 -1
  146. package/lib/stores/aliasstore.spec.js +4 -2
  147. package/lib/stores/aliasstore.spec.js.map +1 -1
  148. package/lib/stores/file.d.ts +5 -2
  149. package/lib/stores/file.js +11 -8
  150. package/lib/stores/file.js.map +1 -1
  151. package/lib/stores/file.spec.js +21 -34
  152. package/lib/stores/file.spec.js.map +1 -1
  153. package/lib/stores/mapper.d.ts +4 -2
  154. package/lib/stores/mapper.js +18 -11
  155. package/lib/stores/mapper.js.map +1 -1
  156. package/lib/stores/mapper.spec.js +6 -3
  157. package/lib/stores/mapper.spec.js.map +1 -1
  158. package/lib/stores/memory.d.ts +5 -2
  159. package/lib/stores/memory.js +11 -9
  160. package/lib/stores/memory.js.map +1 -1
  161. package/lib/stores/memory.spec.d.ts +3 -0
  162. package/lib/stores/memory.spec.js +100 -11
  163. package/lib/stores/memory.spec.js.map +1 -1
  164. package/lib/stores/store.d.ts +177 -87
  165. package/lib/stores/store.js +312 -141
  166. package/lib/stores/store.js.map +1 -1
  167. package/lib/stores/store.spec.d.ts +2 -2
  168. package/lib/stores/store.spec.js +54 -38
  169. package/lib/stores/store.spec.js.map +1 -1
  170. package/lib/stores/webdaql/WebdaQLLexer.d.ts +14 -13
  171. package/lib/stores/webdaql/WebdaQLLexer.js +121 -112
  172. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  173. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +14 -13
  174. package/lib/stores/webdaql/WebdaQLParserLexer.js +121 -112
  175. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  176. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +15 -3
  177. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +23 -13
  178. package/lib/stores/webdaql/WebdaQLParserParser.js +149 -94
  179. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  180. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +9 -2
  181. package/lib/stores/webdaql/query.d.ts +6 -2
  182. package/lib/stores/webdaql/query.js +14 -1
  183. package/lib/stores/webdaql/query.js.map +1 -1
  184. package/lib/stores/webdaql/query.spec.js +10 -1
  185. package/lib/stores/webdaql/query.spec.js.map +1 -1
  186. package/lib/test.d.ts +48 -19
  187. package/lib/test.js +171 -63
  188. package/lib/test.js.map +1 -1
  189. package/lib/unpackedapplication.d.ts +5 -0
  190. package/lib/unpackedapplication.js +58 -10
  191. package/lib/unpackedapplication.js.map +1 -1
  192. package/lib/utils/context.d.ts +76 -29
  193. package/lib/utils/context.js +91 -55
  194. package/lib/utils/context.js.map +1 -1
  195. package/lib/utils/context.spec.d.ts +9 -1
  196. package/lib/utils/context.spec.js +73 -8
  197. package/lib/utils/context.spec.js.map +1 -1
  198. package/lib/utils/cookie.d.ts +4 -5
  199. package/lib/utils/cookie.js +1 -2
  200. package/lib/utils/cookie.js.map +1 -1
  201. package/lib/utils/cookie.spec.js +5 -3
  202. package/lib/utils/cookie.spec.js.map +1 -1
  203. package/lib/utils/httpcontext.spec.js +9 -3
  204. package/lib/utils/httpcontext.spec.js.map +1 -1
  205. package/lib/utils/serializers.d.ts +46 -17
  206. package/lib/utils/serializers.js +116 -2
  207. package/lib/utils/serializers.js.map +1 -1
  208. package/lib/utils/serializers.spec.js +84 -20
  209. package/lib/utils/serializers.spec.js.map +1 -1
  210. package/lib/utils/session.d.ts +14 -8
  211. package/lib/utils/session.js +14 -3
  212. package/lib/utils/session.js.map +1 -1
  213. package/lib/utils/session.spec.js +6 -1
  214. package/lib/utils/session.spec.js.map +1 -1
  215. package/package.json +16 -10
  216. package/test/cachedapp/webda.config.json +6 -1
  217. package/test/config-cached.json +5 -0
  218. package/test/config-file-missing-file.json +5 -7
  219. package/test/config-file-no-reload.json +5 -7
  220. package/test/config-file-reload.json +5 -7
  221. package/test/config-kube-reload.json +5 -11
  222. package/test/config-reload.json +2 -4
  223. package/test/config.json +12 -2
  224. package/test/moddas/voidstore.js +1 -1
  225. package/test/models/ident.js +6 -4
  226. package/test/models/task.js +4 -4
  227. package/webda.module.json +1587 -1266
@@ -6,14 +6,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import bcrypt from "bcryptjs";
8
8
  import { Counter } from "../core.js";
9
+ import { WebdaError } from "../errors.js";
9
10
  import { Inject, Route, Service, ServiceParameters } from "../services/service.js";
10
11
  import { HttpContext } from "../utils/httpcontext.js";
11
12
  export class AuthenticationParameters extends ServiceParameters {
12
13
  constructor(params) {
13
14
  var _a, _b;
14
15
  super(params);
15
- this.identStore ?? (this.identStore = "idents");
16
- this.userStore ?? (this.userStore = "users");
16
+ this.identModel ?? (this.identModel = "Webda/Ident");
17
+ this.userModel ?? (this.userModel = "Webda/User");
17
18
  this.url ?? (this.url = "/auth");
18
19
  this.password ?? (this.password = {
19
20
  regexp: ".{8,}"
@@ -63,20 +64,14 @@ class Authentication extends Service {
63
64
  * @returns
64
65
  */
65
66
  getUserStore() {
66
- return this._usersStore;
67
+ return this._userModel.store();
67
68
  }
68
69
  /**
69
70
  * Get the user store
70
71
  * @returns
71
72
  */
72
73
  getIdentStore() {
73
- return this._identsStore;
74
- }
75
- setIdents(identStore) {
76
- this._identsStore = identStore;
77
- }
78
- setUsers(userStore) {
79
- this._usersStore = userStore;
74
+ return this._identModel.store();
80
75
  }
81
76
  /**
82
77
  * @ignore
@@ -84,6 +79,8 @@ class Authentication extends Service {
84
79
  */
85
80
  computeParameters() {
86
81
  super.computeParameters();
82
+ this._identModel = this.getWebda().getModel(this.parameters.identModel);
83
+ this._userModel = this.getWebda().getModel(this.parameters.userModel);
87
84
  if (this.parameters.password.verifier) {
88
85
  this._passwordVerifier = this.getService(this.parameters.password.verifier);
89
86
  }
@@ -215,10 +212,9 @@ class Authentication extends Service {
215
212
  */
216
213
  async _sendEmailValidation(ctx) {
217
214
  let identKey = ctx.parameters.email + "_email";
218
- let ident = await this._identsStore.get(identKey);
215
+ let ident = await this._identModel.ref(identKey).get();
219
216
  if (!ident) {
220
- await this._identsStore.save({
221
- uuid: `${ctx.parameters.email}_email`,
217
+ await this._identModel.ref(`${ctx.parameters.email}_email`).create({
222
218
  _lastValidationEmail: Date.now(),
223
219
  _type: "email"
224
220
  });
@@ -226,20 +222,17 @@ class Authentication extends Service {
226
222
  else {
227
223
  // If the ident is linked to someone else - might want to remove it
228
224
  if (ident.getUser() !== ctx.getCurrentUserId()) {
229
- throw 409;
225
+ throw new WebdaError.Conflict("Ident is linked to someone else");
230
226
  }
231
227
  // If the email is already validated
232
228
  if (ident._validation) {
233
- throw 412;
229
+ throw new WebdaError.PreconditionFailed("Email already validated");
234
230
  }
235
231
  //
236
232
  if (ident._lastValidationEmail >= Date.now() - this.parameters.email.delay) {
237
- throw 429;
233
+ throw new WebdaError.TooManyRequests("Email sent recently");
238
234
  }
239
- await this._identsStore.patch({
240
- _lastValidationEmail: Date.now(),
241
- uuid: identKey
242
- });
235
+ await this._identModel.ref(ident.getUuid()).setAttribute("_lastValidationEmail", Date.now());
243
236
  }
244
237
  await this.sendValidationEmail(ctx, ctx.parameters.email);
245
238
  }
@@ -250,7 +243,7 @@ class Authentication extends Service {
250
243
  async _getMe(ctx) {
251
244
  let user = await ctx.getCurrentUser();
252
245
  if (user === undefined) {
253
- throw 404;
246
+ throw new WebdaError.NotFound("No user found");
254
247
  }
255
248
  await this.emitSync("Authentication.GetMe", {
256
249
  context: ctx,
@@ -280,21 +273,20 @@ class Authentication extends Service {
280
273
  if (!identId.endsWith(postfix)) {
281
274
  identId += postfix;
282
275
  }
283
- let ident = await this._identsStore.get(identId);
276
+ let ident = await this._identModel.ref(identId).get();
284
277
  // Ident is known
285
278
  if (ident) {
286
- await this.login(ctx, ident.getUser(), ident, provider);
287
- await this._identsStore.patch({
279
+ await this.login(ctx, ident.getUser().toString(), ident, provider);
280
+ await ident.patch({
288
281
  _lastUsed: new Date(),
289
- __tokens: tokens,
290
- uuid: ident.uuid
282
+ __tokens: tokens
291
283
  });
292
284
  // Redirect to?
293
285
  return;
294
286
  }
295
287
  let user;
296
288
  if (profile.email) {
297
- ident = await this._identsStore.get(`${profile.email}_email`);
289
+ ident = await this._identModel.ref(`${profile.email}_email`).get();
298
290
  }
299
291
  // If already login
300
292
  if (ctx.getCurrentUserId()) {
@@ -303,34 +295,35 @@ class Authentication extends Service {
303
295
  else {
304
296
  // If an email in profile try to find the ident
305
297
  if (ident) {
306
- user = await this._usersStore.get(ident.getUser());
298
+ user = await this._userModel.ref(ident.getUser().toString()).get();
307
299
  }
308
300
  if (!user) {
309
301
  // If no user, register a new user automatically
310
302
  user = await this.registerUser(ctx, profile, identId);
311
- await this._usersStore.save(user);
303
+ await user.save();
312
304
  }
313
305
  }
314
306
  if (profile.email && !ident) {
315
307
  // Save additional email
316
- ident = this._identsStore.newModel({
308
+ await new this._identModel()
309
+ .load({
317
310
  uuid: `${profile.email}_email`,
318
- provider: "email"
319
- });
320
- ident.setUser(user.getUuid());
321
- await ident.save(true);
311
+ provider: "email",
312
+ _user: user.getUuid()
313
+ }, true)
314
+ .save();
322
315
  }
323
316
  // Work directly on ident argument
324
- ident = this._identsStore.newModel({
317
+ ident = new this._identModel().load({
325
318
  uuid: identId,
326
319
  profile,
327
320
  __tokens: tokens,
328
321
  provider
329
- });
322
+ }, true);
330
323
  ident.setUser(user.uuid);
331
324
  ident._lastUsed = new Date();
332
325
  ident.setType(provider);
333
- await ident.save(true);
326
+ await ident.save();
334
327
  ident.__new = true;
335
328
  await this.login(ctx, user, ident, provider);
336
329
  }
@@ -339,16 +332,18 @@ class Authentication extends Service {
339
332
  * @param ident
340
333
  */
341
334
  async createUserWithIdent(provider, identId, profile = {}) {
342
- if (await this._identsStore.exists(`${identId}_${provider}`)) {
335
+ if (await this._identModel.ref(`${identId}_${provider}`).exists()) {
343
336
  throw new Error("Ident is already known");
344
337
  }
345
- let ctx = await this._webda.newContext(new HttpContext("fake", "GET", "/"));
338
+ let ctx = await this._webda.newWebContext(new HttpContext("fake", "GET", "/"));
346
339
  // Pretend we logged in with the ident
347
340
  await this.onIdentLogin(ctx, provider, identId, profile);
348
341
  }
349
- async registerUser(ctx, data, identId, user = this._usersStore.newModel()) {
350
- user.email = data.email;
351
- user.locale = ctx.getLocale();
342
+ async registerUser(ctx, data, identId, user = new this._userModel()) {
343
+ user.load({
344
+ email: data.email,
345
+ locale: ctx.getLocale()
346
+ }, true);
352
347
  this.metrics.registration.inc();
353
348
  await this.emitSync("Authentication.Register", {
354
349
  user: user,
@@ -362,7 +357,7 @@ class Authentication extends Service {
362
357
  const expire = Date.now() + interval;
363
358
  let user;
364
359
  if (typeof uuid === "string") {
365
- user = await this._usersStore.get(uuid);
360
+ user = await this._userModel.ref(uuid).get();
366
361
  }
367
362
  else {
368
363
  user = uuid;
@@ -383,58 +378,50 @@ class Authentication extends Service {
383
378
  */
384
379
  async _passwordRecoveryEmail(ctx) {
385
380
  let email = ctx.parameter("email");
386
- let ident = await this._identsStore.get(email + "_email");
381
+ let ident = await this._identModel.ref(email + "_email").get();
387
382
  if (!ident) {
388
- throw 404;
383
+ throw new WebdaError.NotFound("Email not found");
389
384
  }
390
- let user = await this._usersStore.get(ident.getUser());
385
+ let user = await this._userModel.ref(ident.getUser().toString()).get();
391
386
  // Dont allow to do too many request
392
387
  if (!user.lastPasswordRecoveryBefore(Date.now() - this.parameters.email.delay)) {
393
- throw 429;
388
+ throw new WebdaError.TooManyRequests("Password recovery already requested recently");
394
389
  }
395
- await this._usersStore.patch({
396
- _lastPasswordRecovery: Date.now(),
397
- uuid: user.uuid
398
- }, true, null);
390
+ await user.patch({
391
+ _lastPasswordRecovery: Date.now()
392
+ }, null);
399
393
  this.metrics.recovery.inc();
400
394
  await this.sendRecoveryEmail(ctx, user, email);
401
395
  }
402
396
  async _verifyPassword(password, user) {
403
397
  if (this._passwordVerifier) {
404
398
  if (!(await this._passwordVerifier.validate(password, user))) {
405
- throw 400;
399
+ throw new WebdaError.BadRequest("Password does not match the policy");
406
400
  }
407
401
  return;
408
402
  }
409
403
  let regexp = new RegExp(this.parameters.password.regexp);
410
404
  if (regexp.exec(password) === null) {
411
- throw 400;
405
+ throw new WebdaError.BadRequest("Password does not match the policy");
412
406
  }
413
407
  }
414
408
  async _passwordRecovery(ctx) {
415
409
  let body = await ctx.getRequestBody();
416
- if (body.password === undefined ||
417
- body.login === undefined ||
418
- body.token === undefined ||
419
- body.expire === undefined) {
420
- throw 400;
421
- }
422
- let user = await this._usersStore.get(body.login.toLowerCase());
410
+ let user = await this._userModel.ref(body.login.toLowerCase()).get();
423
411
  if (!user) {
424
- throw 403;
412
+ throw new WebdaError.Forbidden("User not found");
425
413
  }
426
414
  if (!(await this.cryptoService.hmacVerify(body.login.toLowerCase() + body.expire + user.getPassword(), body.token))) {
427
- throw 403;
415
+ throw new WebdaError.Forbidden("Invalid token");
428
416
  }
429
417
  if (body.expire < Date.now()) {
430
- throw 410;
418
+ throw new WebdaError.Gone("Expired token");
431
419
  }
432
420
  await this._verifyPassword(body.password, user);
433
421
  let password = this.hashPassword(body.password);
434
- await this._usersStore.patch({
435
- __password: password,
436
- uuid: body.login.toLowerCase()
437
- }, true, null);
422
+ await user.patch({
423
+ __password: password
424
+ }, null);
438
425
  this.metrics.recovered.inc();
439
426
  await this.emitSync("Authentication.PasswordUpdate", {
440
427
  user,
@@ -448,9 +435,6 @@ class Authentication extends Service {
448
435
  * @returns
449
436
  */
450
437
  async _handleEmailCallback(ctx) {
451
- if (!ctx.parameter("token")) {
452
- throw 400;
453
- }
454
438
  if (!(await this.cryptoService.hmacVerify(`${ctx.parameter("email")}_${ctx.parameter("user")}`, ctx.parameter("token")))) {
455
439
  ctx.writeHead(302, {
456
440
  Location: this.parameters.failureRedirect + "?reason=badToken"
@@ -472,17 +456,15 @@ class Authentication extends Service {
472
456
  return;
473
457
  }
474
458
  const uuid = ctx.parameter("email") + "_email";
475
- let ident = await this._identsStore.get(uuid);
459
+ let ident = await this._identModel.ref(uuid).get();
476
460
  // Would mean the ident got delete in the mean time... hyper low likely hood
477
461
  if (ident === undefined) {
478
- ident = this._identsStore.newModel({
479
- uuid
480
- });
462
+ ident = new this._identModel().setUuid(uuid);
481
463
  }
482
464
  ident._type = "email";
483
465
  ident._validation = new Date();
484
466
  ident.setUser(ctx.parameter("user"));
485
- await ident.save(true);
467
+ await ident.save();
486
468
  ctx.writeHead(302, {
487
469
  Location: this.parameters.successRedirect + "?validation=email",
488
470
  "X-Webda-Authentication": "success"
@@ -504,7 +486,12 @@ class Authentication extends Service {
504
486
  to: email,
505
487
  locale: locale,
506
488
  template: "EMAIL_RECOVERY",
507
- replacements: { ...this.parameters.email, infos, to: email, context: ctx }
489
+ replacements: {
490
+ ...this.parameters.email,
491
+ infos,
492
+ to: email,
493
+ context: ctx
494
+ }
508
495
  };
509
496
  return mailer.send(mailOptions);
510
497
  }
@@ -560,7 +547,7 @@ class Authentication extends Service {
560
547
  await this.emitSync("Authentication.Logout", {
561
548
  context: ctx
562
549
  });
563
- ctx.newSession();
550
+ await ctx.newSession();
564
551
  }
565
552
  /**
566
553
  * Login a user
@@ -578,7 +565,7 @@ class Authentication extends Service {
578
565
  ident
579
566
  };
580
567
  if (typeof user == "object") {
581
- event.userId = user.uuid;
568
+ event.userId = user.getUuid();
582
569
  event.user = user;
583
570
  }
584
571
  else {
@@ -600,7 +587,7 @@ class Authentication extends Service {
600
587
  */
601
588
  async handleLogin(ctx, ident) {
602
589
  let updates = {};
603
- let user = await this._usersStore.get(ident.getUser());
590
+ let user = await this._userModel.ref(ident.getUser().toString()).get();
604
591
  // Check password
605
592
  if (this.checkPassword(user.getPassword(), (await ctx.getRequestBody()).password)) {
606
593
  if (ident._failedLogin > 0) {
@@ -608,9 +595,8 @@ class Authentication extends Service {
608
595
  }
609
596
  updates._lastUsed = new Date();
610
597
  updates._failedLogin = 0;
611
- updates.uuid = ident.uuid;
612
- await this._identsStore.patch(updates, true, null);
613
- await this.login(ctx, ident.getUser(), ident, "email");
598
+ await this._identModel.ref(ident.uuid).patch(updates);
599
+ await this.login(ctx, ident.getUser().toString(), ident, "email");
614
600
  ctx.write(user);
615
601
  }
616
602
  else {
@@ -622,12 +608,13 @@ class Authentication extends Service {
622
608
  ident._failedLogin ?? (ident._failedLogin = 0);
623
609
  updates._failedLogin = ident._failedLogin + 1;
624
610
  updates._lastFailedLogin = new Date();
625
- updates.uuid = ident.uuid;
626
611
  // Swalow exeception issue to double check !
627
- await this._identsStore.patch(updates, true, null);
612
+ await this._identModel.ref(ident.uuid).patch(updates);
628
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
629
616
  if (!ctx.isEnded()) {
630
- throw 403;
617
+ throw new WebdaError.Forbidden("Invalid password");
631
618
  }
632
619
  }
633
620
  }
@@ -640,15 +627,12 @@ class Authentication extends Service {
640
627
  async _handleEmail(ctx) {
641
628
  // If called while logged in reject
642
629
  if (ctx.getCurrentUserId() !== undefined) {
643
- throw 410;
630
+ throw new WebdaError.Gone("Already logged in");
644
631
  }
645
632
  let body = await ctx.getRequestBody();
646
- if (body.login === undefined) {
647
- throw 400;
648
- }
649
633
  const mailConfig = this.parameters.email;
650
634
  const uuid = body.login.toLowerCase() + "_email";
651
- let ident = await this._identsStore.get(uuid);
635
+ let ident = await this._identModel.ref(uuid).get();
652
636
  if (ident !== undefined && ident.getUser() !== undefined) {
653
637
  // Register on an known user
654
638
  if (!body.register) {
@@ -657,7 +641,7 @@ class Authentication extends Service {
657
641
  }
658
642
  // If register on a validate email
659
643
  if (ident._validation !== undefined) {
660
- throw 409;
644
+ throw new WebdaError.Conflict("Email already registered");
661
645
  }
662
646
  }
663
647
  // TODO Handle add of email on authenticated user
@@ -677,7 +661,7 @@ class Authentication extends Service {
677
661
  }
678
662
  }
679
663
  if (!body.password) {
680
- throw 400;
664
+ throw new WebdaError.BadRequest("Password is required");
681
665
  }
682
666
  // Store with a _
683
667
  let __password = this.hashPassword(body.password);
@@ -686,26 +670,29 @@ class Authentication extends Service {
686
670
  delete body.password;
687
671
  delete body.register;
688
672
  delete body.token;
689
- let user = await this.registerUser(ctx, {}, uuid, { ...body, __password });
673
+ let user = await this.registerUser(ctx, {}, uuid, new this._userModel().load({
674
+ ...body,
675
+ __password
676
+ }, true));
690
677
  await this.emitSync("Authentication.PasswordCreate", {
691
678
  user,
692
679
  password: __password,
693
680
  context: ctx
694
681
  });
695
- user = await this._usersStore.save(user);
696
- const newIdent = this._identsStore.newModel({
682
+ await user.save();
683
+ const newIdent = new this._identModel().load({
697
684
  uuid: uuid,
698
685
  _type: "email",
699
686
  email: email
700
- });
701
- newIdent.setUser(user.uuid);
687
+ }, true);
688
+ newIdent.setUser(user.getUuid());
702
689
  if (validation) {
703
690
  newIdent._validation = validation;
704
691
  }
705
692
  else if (!mailConfig.skipEmailValidation) {
706
693
  newIdent._lastValidationEmail = Date.now();
707
694
  }
708
- ident = await newIdent.save(true);
695
+ ident = await newIdent.save();
709
696
  await this.login(ctx, user, ident, "email");
710
697
  ctx.write(user);
711
698
  if (!validation && !mailConfig.skipEmailValidation) {
@@ -713,23 +700,17 @@ class Authentication extends Service {
713
700
  }
714
701
  return;
715
702
  }
716
- throw 404;
703
+ throw new WebdaError.NotFound("");
717
704
  }
718
705
  async generateEmailValidationToken(user, email) {
719
706
  return this.cryptoService.hmac(email + "_" + user);
720
707
  }
721
708
  }
722
- __decorate([
723
- Inject("identStore", "idents")
724
- ], Authentication.prototype, "_identsStore", void 0);
725
- __decorate([
726
- Inject("userStore", "users")
727
- ], Authentication.prototype, "_usersStore", void 0);
728
709
  __decorate([
729
710
  Inject("CryptoService")
730
711
  ], Authentication.prototype, "cryptoService", void 0);
731
712
  __decorate([
732
- Route("./email/{email}/validate", ["GET"], false, {
713
+ Route("./email/{email}/validate", ["GET"], {
733
714
  get: {
734
715
  description: "The email validation process will be start",
735
716
  summary: "Restart email validation",
@@ -752,7 +733,7 @@ __decorate([
752
733
  })
753
734
  ], Authentication.prototype, "_sendEmailValidation", null);
754
735
  __decorate([
755
- Route("./me", ["GET"], false, {
736
+ Route("./me", ["GET"], {
756
737
  get: {
757
738
  description: "Retrieve the current user from the session",
758
739
  summary: "Get current user",
@@ -761,7 +742,7 @@ __decorate([
761
742
  })
762
743
  ], Authentication.prototype, "_getMe", null);
763
744
  __decorate([
764
- Route(".", ["GET", "DELETE"], false, {
745
+ Route(".", ["GET", "DELETE"], {
765
746
  get: {
766
747
  description: "Retrieve the list of available authentication",
767
748
  summary: "Get available auths",
@@ -783,7 +764,7 @@ __decorate([
783
764
  })
784
765
  ], Authentication.prototype, "_listAuthentications", null);
785
766
  __decorate([
786
- Route("./email/callback{?email,token,user}", ["GET"], false, {
767
+ Route("./email/callback{?email,token,user?}", ["GET"], {
787
768
  hidden: true
788
769
  })
789
770
  ], Authentication.prototype, "_handleEmailCallback", null);
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/services/authentication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/services/authentication.ts"],"names":[],"mappings":"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"}