@social-mail/social-mail-web-server 1.4.945 → 1.4.946

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 (27) hide show
  1. package/dist/server/model/entities/VerificationToken.d.ts +5 -0
  2. package/dist/server/model/entities/VerificationToken.d.ts.map +1 -1
  3. package/dist/server/model/entities/VerificationToken.js +15 -1
  4. package/dist/server/model/entities/VerificationToken.js.map +1 -1
  5. package/dist/server/model/events/VerificationTokenEvents.d.ts +3 -0
  6. package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
  7. package/dist/server/model/events/VerificationTokenEvents.js +74 -0
  8. package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
  9. package/dist/server/services/external-otp-in/ExternalOtpInService.d.ts +5 -0
  10. package/dist/server/services/external-otp-in/ExternalOtpInService.d.ts.map +1 -1
  11. package/dist/server/services/external-otp-in/ExternalOtpInService.js +19 -20
  12. package/dist/server/services/external-otp-in/ExternalOtpInService.js.map +1 -1
  13. package/dist/tsconfig.tsbuildinfo +1 -1
  14. package/dist/wwwroot/routes/shop/order/checkout/get.d.ts +5 -0
  15. package/dist/wwwroot/routes/shop/order/checkout/get.d.ts.map +1 -0
  16. package/dist/wwwroot/routes/shop/order/checkout/get.js +8 -0
  17. package/dist/wwwroot/routes/shop/order/checkout/get.js.map +1 -0
  18. package/dist/wwwroot/routes/social-mail/store/order/buy/post.d.ts +7 -0
  19. package/dist/wwwroot/routes/social-mail/store/order/buy/post.d.ts.map +1 -0
  20. package/dist/wwwroot/routes/social-mail/store/order/buy/post.js +24 -0
  21. package/dist/wwwroot/routes/social-mail/store/order/buy/post.js.map +1 -0
  22. package/package.json +5 -4
  23. package/src/server/model/entities/VerificationToken.ts +15 -1
  24. package/src/server/model/events/VerificationTokenEvents.ts +77 -1
  25. package/src/server/services/external-otp-in/ExternalOtpInService.ts +22 -19
  26. package/src/wwwroot/routes/shop/order/checkout/get.tsx +11 -0
  27. package/src/wwwroot/routes/social-mail/store/order/buy/post.tsx +18 -0
@@ -1,6 +1,8 @@
1
1
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
2
2
  import type LoginSession from "./LoginSession.js";
3
3
  import type UserAuthFactor from "./UserAuthFactor.js";
4
+ declare const verificationTypes: readonly ["email", "sms", "captcha", "totp"];
5
+ export type verificationType = typeof verificationTypes[number];
4
6
  export default class VerificationToken {
5
7
  verificationID: number;
6
8
  externalID: string;
@@ -11,14 +13,17 @@ export default class VerificationToken {
11
13
  accessCode: string;
12
14
  ipAddress: string;
13
15
  externalConfig: string;
16
+ type: verificationType;
14
17
  addresses: VerificationTokenAddress[];
15
18
  loginSessions: LoginSession[];
16
19
  authFactors: UserAuthFactor[];
17
20
  smsConfig: any;
21
+ verifyAddresses: any;
18
22
  }
19
23
  export declare class VerificationTokenAddress {
20
24
  verificationID: number;
21
25
  address: string;
22
26
  verificationToken: VerificationToken;
23
27
  }
28
+ export {};
24
29
  //# sourceMappingURL=VerificationToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerificationToken.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/VerificationToken.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAGtD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAGlC,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,QAAQ,CAAC;IAGtB,MAAM,EAAE,QAAQ,CAAC;IAGjB,QAAQ,EAAE,OAAO,CAAC;IAGlB,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,cAAc,EAAE,MAAM,CAAC;IAEvB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,EAAE,CAAC;IAG9B,SAAS,EAAE,GAAG,CAAC;CAClB;AAED,qBACa,wBAAwB;IAUjC,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,iBAAiB,CAAC;CACxC"}
1
+ {"version":3,"file":"VerificationToken.d.ts","sourceRoot":"","sources":["../../../../src/server/model/entities/VerificationToken.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAEtD,QAAA,MAAM,iBAAiB,8CAAgD,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAGhE,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAGlC,cAAc,EAAE,MAAM,CAAC;IAIvB,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,QAAQ,CAAC;IAGtB,MAAM,EAAE,QAAQ,CAAC;IAGjB,QAAQ,EAAE,OAAO,CAAC;IAIlB,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,EAAE,MAAM,CAAC;IAInB,SAAS,EAAE,MAAM,CAAC;IAGlB,cAAc,EAAE,MAAM,CAAC;IAGvB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,EAAE,CAAC;IAG9B,SAAS,EAAE,GAAG,CAAC;IAKf,eAAe,EAAE,GAAG,CAAC;CACxB;AAED,qBACa,wBAAwB;IAUjC,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,iBAAiB,CAAC;CACxC"}
@@ -12,7 +12,8 @@ import Table from "@entity-access/entity-access/dist/decorators/Table.js";
12
12
  import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
13
13
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
14
14
  import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
15
- import { JsonProperty } from "@entity-access/server-pages/dist/services/ModelService.js";
15
+ import { IgnoreJsonProperty, JsonProperty } from "@entity-access/server-pages/dist/services/ModelService.js";
16
+ const verificationTypes = ["email", "sms", "captcha", "totp"];
16
17
  let VerificationToken = class VerificationToken {
17
18
  };
18
19
  __decorate([
@@ -21,6 +22,7 @@ __decorate([
21
22
  ], VerificationToken.prototype, "verificationID", void 0);
22
23
  __decorate([
23
24
  Column({ dataType: "Char", length: 200, nullable: true }),
25
+ IgnoreJsonProperty,
24
26
  __metadata("design:type", String)
25
27
  ], VerificationToken.prototype, "externalID", void 0);
26
28
  __decorate([
@@ -37,6 +39,7 @@ __decorate([
37
39
  ], VerificationToken.prototype, "verified", void 0);
38
40
  __decorate([
39
41
  Column({ dataType: "Char", length: 20 }),
42
+ IgnoreJsonProperty,
40
43
  __metadata("design:type", String)
41
44
  ], VerificationToken.prototype, "code", void 0);
42
45
  __decorate([
@@ -45,16 +48,27 @@ __decorate([
45
48
  ], VerificationToken.prototype, "accessCode", void 0);
46
49
  __decorate([
47
50
  Column({ dataType: "Char", length: 50, nullable: true }),
51
+ IgnoreJsonProperty,
48
52
  __metadata("design:type", String)
49
53
  ], VerificationToken.prototype, "ipAddress", void 0);
50
54
  __decorate([
51
55
  Column({ dataType: "Char", nullable: true }),
52
56
  __metadata("design:type", String)
53
57
  ], VerificationToken.prototype, "externalConfig", void 0);
58
+ __decorate([
59
+ Column({ dataType: "AsciiChar", length: 50, enum: verificationTypes }),
60
+ __metadata("design:type", String)
61
+ ], VerificationToken.prototype, "type", void 0);
54
62
  __decorate([
55
63
  JsonProperty({}),
56
64
  __metadata("design:type", Object)
57
65
  ], VerificationToken.prototype, "smsConfig", void 0);
66
+ __decorate([
67
+ JsonProperty({
68
+ help: "Verification address array as string[] containing addresses to verify for email and sms"
69
+ }),
70
+ __metadata("design:type", Object)
71
+ ], VerificationToken.prototype, "verifyAddresses", void 0);
58
72
  VerificationToken = __decorate([
59
73
  Table("VerificationTokens")
60
74
  ], VerificationToken);
@@ -1 +1 @@
1
- {"version":3,"file":"VerificationToken.js","sourceRoot":"","sources":["../../../../src/server/model/entities/VerificationToken.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,wDAAwD,CAAC;AAC5E,OAAO,KAAK,MAAM,uDAAuD,CAAC;AAC1E,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAC/D,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,wDAAwD,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAI1E,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAmCrC,CAAA;AAhCG;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC;;yDACzC;AAGvB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACvC;AAGnB;IADC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC;8BAC5B,QAAQ;sDAAC;AAGtB;IADC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC;8BAC1D,QAAQ;iDAAC;AAGjB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAC,CAAC;;mDACnC;AAGlB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;;+CAC3B;AAGb;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAC,CAAC;;qDAC9E;AAGnB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACvC;AAGlB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;yDACtB;AAOvB;IADC,YAAY,CAAC,EAAE,CAAC;;oDACF;AAlCE,iBAAiB;IADrC,KAAK,CAAC,oBAAoB,CAAC;GACP,iBAAiB,CAmCrC;eAnCoB,iBAAiB;AAsC/B,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;CAgBpC,CAAA;AANG;IARC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE;QACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB;QACpC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;QACnC,oBAAoB,EAAC;YACjB,OAAO,EAAE,QAAQ;SACpB;KACJ,CAAC;;gEACqB;AAGvB;IADC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAG,GAAG,EAAE,IAAI,EAAE,CAAC;;yDACtC;AAbP,wBAAwB;IADpC,KAAK,CAAC,4BAA4B,CAAC;GACvB,wBAAwB,CAgBpC"}
1
+ {"version":3,"file":"VerificationToken.js","sourceRoot":"","sources":["../../../../src/server/model/entities/VerificationToken.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,11 @@ import VerificationToken from "../entities/VerificationToken.js";
2
2
  import AuthenticatedEvents from "./AuthenticatedEvents.js";
3
3
  import { ForeignKeyFilter } from "@entity-access/entity-access/dist/model/events/EntityEvents.js";
4
4
  import { IEntityQuery } from "@entity-access/entity-access/dist/model/IFilterWithParameter.js";
5
+ import ChangeEntry from "@entity-access/entity-access/dist/model/changes/ChangeEntry.js";
5
6
  export default class VerificationTokenEvents extends AuthenticatedEvents<VerificationToken> {
6
7
  get(id: any, accessCode: any): IEntityQuery<VerificationToken>;
8
+ verifyCode(entity: VerificationToken, id: number, accessCode: string, code: string): Promise<VerificationToken>;
9
+ beforeInsert(entity: VerificationToken, entry: ChangeEntry<VerificationToken>): Promise<void>;
7
10
  onForeignKeyFilter(filter: ForeignKeyFilter<VerificationToken, any>): IEntityQuery<any>;
8
11
  includeFilter(query: IEntityQuery<VerificationToken>, type?: any, key?: string): IEntityQuery<VerificationToken>;
9
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VerificationTokenEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/VerificationTokenEvents.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gEAAgE,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AAE/F,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAGvF,GAAG,CAAC,EAAE,KAAA,EAAE,UAAU,KAAA;IAKlB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAInE,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;CAGnH"}
1
+ {"version":3,"file":"VerificationTokenEvents.d.ts","sourceRoot":"","sources":["../../../../src/server/model/events/VerificationTokenEvents.ts"],"names":[],"mappings":"AACA,OAAO,iBAAuC,MAAM,kCAAkC,CAAC;AACvF,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gEAAgE,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,iEAAiE,CAAC;AAQ/F,OAAO,WAAW,MAAM,gEAAgE,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAGvF,GAAG,CAAC,EAAE,KAAA,EAAE,UAAU,KAAA;IAMZ,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAoBlF,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC;IA8CnF,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAInE,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;CAGnH"}
@@ -8,14 +8,82 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import ExternalQuery from "@entity-access/server-pages/dist/decorators/ExternalQuery.js";
11
+ import VerificationToken from "../entities/VerificationToken.js";
11
12
  import AuthenticatedEvents from "./AuthenticatedEvents.js";
12
13
  import { ServiceProvider } from "@entity-access/entity-access/dist/di/di.js";
13
14
  import SocialMailContext from "../SocialMailContext.js";
15
+ import Page from "@entity-access/server-pages/dist/Page.js";
16
+ import RateLimiterService from "../../services/rate-limiter/RateLimiterService.js";
17
+ import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
18
+ import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
19
+ import { randomUUID } from "crypto";
20
+ import CaptchaService from "../../services/captcha/CaptchaService.js";
21
+ import ExternalOtpInService from "../../services/external-otp-in/ExternalOtpInService.js";
22
+ import ExternalInvoke from "@entity-access/server-pages/dist/decorators/ExternalInvoke.js";
14
23
  export default class VerificationTokenEvents extends AuthenticatedEvents {
15
24
  get(id, accessCode) {
16
25
  const db = ServiceProvider.resolve(this, SocialMailContext);
17
26
  return db.verificationTokens.where({ id, accessCode }, (p) => (x) => x.verificationID === id && x.accessCode === p.accessCode);
18
27
  }
28
+ async verifyCode(entity, id, accessCode, code) {
29
+ if (entity.verificationID !== id || entity.accessCode !== accessCode) {
30
+ throw new EntityAccessError("Invalid id/access code");
31
+ }
32
+ if (entity.code !== code) {
33
+ throw new EntityAccessError("Invalid code");
34
+ }
35
+ switch (entity.type) {
36
+ case "captcha":
37
+ case "email":
38
+ break;
39
+ default:
40
+ throw new EntityAccessError(`Invalid verification type ${entity.type}`);
41
+ }
42
+ entity.verified = true;
43
+ const db = ServiceProvider.resolve(this, SocialMailContext);
44
+ await db.verificationTokens.statements.update({ verified: true }, { verificationID: entity.verificationID });
45
+ return entity;
46
+ }
47
+ async beforeInsert(entity, entry) {
48
+ const { type } = entity;
49
+ const page = ServiceProvider.resolve(this, Page);
50
+ // const method = page?.request?.method;
51
+ // if (method && !/post/i.test(method)) {
52
+ // throw new EntityAccessError("Get not supported");
53
+ // }
54
+ const ip = page.request?.remoteIPAddress ?? "";
55
+ const rateLimiterService = ServiceProvider.resolve(this, RateLimiterService);
56
+ const rl = await rateLimiterService.acquire(ip, "captcha");
57
+ if (!rl) {
58
+ throw new EntityAccessError("Rate Limited", 429);
59
+ }
60
+ const code = DateTime.now.msSinceEpoch.toString();
61
+ switch (type) {
62
+ case "captcha":
63
+ const cs = ServiceProvider.resolve(this, CaptchaService);
64
+ const r = await cs.generatePair();
65
+ entity.code = code.substring(code.length - 5);
66
+ entity.accessCode = randomUUID();
67
+ entity.expiry = DateTime.now.addMinutes(15);
68
+ entity.externalID = r.id.toString();
69
+ break;
70
+ case "email":
71
+ entity.code = code.substring(code.length - 5);
72
+ entity.accessCode = randomUUID();
73
+ break;
74
+ case "sms":
75
+ const es = ServiceProvider.resolve(this, ExternalOtpInService);
76
+ const { id, accessCode, externalConfig } = await es.createNoInsert(entity.verifyAddresses);
77
+ entity.externalID = id;
78
+ entity.accessCode = accessCode;
79
+ entity.externalConfig = externalConfig;
80
+ break;
81
+ // case "totp":
82
+ // break;
83
+ default:
84
+ throw new EntityAccessError(`Type ${type} not supported`, 422);
85
+ }
86
+ }
19
87
  onForeignKeyFilter(filter) {
20
88
  return filter.unfiltered();
21
89
  }
@@ -29,4 +97,10 @@ __decorate([
29
97
  __metadata("design:paramtypes", [Object, Object]),
30
98
  __metadata("design:returntype", void 0)
31
99
  ], VerificationTokenEvents.prototype, "get", null);
100
+ __decorate([
101
+ ExternalInvoke,
102
+ __metadata("design:type", Function),
103
+ __metadata("design:paramtypes", [VerificationToken, Number, String, String]),
104
+ __metadata("design:returntype", Promise)
105
+ ], VerificationTokenEvents.prototype, "verifyCode", null);
32
106
  //# sourceMappingURL=VerificationTokenEvents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VerificationTokenEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/VerificationTokenEvents.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,aAAa,MAAM,8DAA8D,CAAC;AAEzF,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,mBAAsC;IAGvF,GAAG,CAAC,EAAE,EAAE,UAAU;QACd,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,UAAU,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;IAClI,CAAC;IAED,kBAAkB,CAAC,MAAgD;QAC/D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,KAAsC,EAAE,IAAU,EAAE,GAAY;QAC1E,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAZG;IADC,aAAa;;;;kDAIb"}
1
+ {"version":3,"file":"VerificationTokenEvents.js","sourceRoot":"","sources":["../../../../src/server/model/events/VerificationTokenEvents.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,11 @@ import CryptoService from "../CryptoService.js";
3
3
  export default class ExternalOtpInService {
4
4
  db: SocialMailContext;
5
5
  cryptoService: CryptoService;
6
+ createNoInsert(phoneNumbers: string[]): Promise<{
7
+ id: any;
8
+ accessCode: any;
9
+ externalConfig: string;
10
+ }>;
6
11
  create(phoneNumbers: string[]): Promise<import("../../model/entities/VerificationToken.js").default>;
7
12
  get(verificationID: any): Promise<{
8
13
  success: any;
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalOtpInService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/external-otp-in/ExternalOtpInService.ts"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAchD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAGrC,EAAE,EAAE,iBAAiB,CAAC;IAGtB,aAAa,EAAE,aAAa,CAAC;IAEvB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE;IAiC7B,GAAG,CAAC,cAAc,KAAA;;;CAS3B"}
1
+ {"version":3,"file":"ExternalOtpInService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/external-otp-in/ExternalOtpInService.ts"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAWhD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAGrC,EAAE,EAAE,iBAAiB,CAAC;IAGtB,aAAa,EAAE,aAAa,CAAC;IAEvB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE;;;;;IAarC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE;IA6B7B,GAAG,CAAC,cAAc,KAAA;;;CAM3B"}
@@ -12,23 +12,25 @@ import { globalEnv } from "../../../common/globalEnv.js";
12
12
  import SocialMailContext from "../../model/SocialMailContext.js";
13
13
  import CryptoService from "../CryptoService.js";
14
14
  import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
15
- const headers = {
16
- authorization: `basic ${Buffer.from(`${globalEnv.otpIn.key}:${globalEnv.otpIn.secret}`).toString("base64")}`
17
- };
18
- const postHeaders = {
19
- ...headers,
20
- "content-type": "application/json",
21
- };
15
+ import FetchBuilder from "@web-atoms/fetch-builder";
16
+ const client = FetchBuilder
17
+ .url(`https://${globalEnv.otpIn.host}/api/opt-in/`)
18
+ .header("authorization", `basic ${Buffer.from(`${globalEnv.otpIn.key}:${globalEnv.otpIn.secret}`).toString("base64")}`);
22
19
  let ExternalOtpInService = class ExternalOtpInService {
20
+ async createNoInsert(phoneNumbers) {
21
+ const result = await client.post("create")
22
+ .jsonBody({
23
+ phoneNumbers
24
+ }).asJson();
25
+ const { accessCode, id } = result;
26
+ const externalConfig = JSON.stringify(result);
27
+ return { id, accessCode, externalConfig };
28
+ }
23
29
  async create(phoneNumbers) {
24
- const rs = await fetch(`https://${globalEnv.otpIn.host}/api/otp-in/create`, {
25
- method: "POST",
26
- headers: postHeaders,
27
- body: JSON.stringify({
28
- phoneNumbers
29
- })
30
- });
31
- const result = await rs.json();
30
+ const result = await client.post("create")
31
+ .jsonBody({
32
+ phoneNumbers
33
+ }).asJson();
32
34
  const dateCreated = DateTime.now;
33
35
  const expiry = dateCreated.addMinutes(15);
34
36
  const { accessCode } = result;
@@ -48,11 +50,8 @@ let ExternalOtpInService = class ExternalOtpInService {
48
50
  }
49
51
  async get(verificationID) {
50
52
  const v = await this.db.verificationTokens.statements.select({}, { verificationID });
51
- const rs = await fetch(`https://${globalEnv.otpIn.host}/api/otp-in/get/${v.externalID}/${v.accessCode}`, {
52
- method: "GET",
53
- headers
54
- });
55
- const { success } = await rs.json();
53
+ const { success } = await client.get(`get/${v.externalID}/${v.accessCode}`)
54
+ .asJson();
56
55
  return { success };
57
56
  }
58
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalOtpInService.js","sourceRoot":"","sources":["../../../../src/server/services/external-otp-in/ExternalOtpInService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAqB,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAE3E,MAAM,OAAO,GAAG;IACZ,aAAa,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;CAC/G,CAAC;AAEF,MAAM,WAAW,GAAG;IAChB,GAAI,OAAO;IACX,cAAc,EAAE,kBAAkB;CACrC,CAAC;AAGa,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAQrC,KAAK,CAAC,MAAM,CAAC,YAAsB;QAC/B,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,SAAS,CAAC,KAAK,CAAC,IAAI,oBAAoB,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,YAAY;aACf,CAAC;SACL,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE9B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9C,cAAc;QACd,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC;YACzD,UAAU,EAAE,MAAM,CAAC,EAAE;YACrB,cAAc;YACd,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,WAAW;YACX,MAAM;SACT,CAAC,CAAC;QAGH,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,cAAc;QACpB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAG,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,SAAS,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACrG,MAAM,EAAE,KAAK;YACb,OAAO;SACV,CAAC,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,EAAE,OAAO,EAAE,CAAC;IACvB,CAAC;CACJ,CAAA;AA/CG;IADC,MAAM;8BACH,iBAAiB;gDAAC;AAGtB;IADC,MAAM;8BACQ,aAAa;2DAAC;AANZ,oBAAoB;IADxC,cAAc;GACM,oBAAoB,CAkDxC;eAlDoB,oBAAoB"}
1
+ {"version":3,"file":"ExternalOtpInService.js","sourceRoot":"","sources":["../../../../src/server/services/external-otp-in/ExternalOtpInService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAqB,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAEhD,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAGpD,MAAM,MAAM,GAAG,YAAY;KACtB,GAAG,CAAC,WAAW,SAAS,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAG7G,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAQrC,KAAK,CAAC,cAAc,CAAC,YAAsB;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACrC,QAAQ,CAAC;YACN,YAAY;SACf,CAAC,CAAC,MAAM,EAAsB,CAAC;QAEpC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAElC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9C,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAsB;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aACrC,QAAQ,CAAC;YACN,YAAY;SACf,CAAC,CAAC,MAAM,EAAsB,CAAC;QAEpC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE1C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE9B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9C,cAAc;QACd,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC;YACzD,UAAU,EAAE,MAAM,CAAC,EAAE;YACrB,cAAc;YACd,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,WAAW;YACX,MAAM;SACT,CAAC,CAAC;QAGH,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,cAAc;QACpB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAG,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;aACtE,MAAM,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,CAAC;IACvB,CAAC;CACJ,CAAA;AArDG;IADC,MAAM;8BACH,iBAAiB;gDAAC;AAGtB;IADC,MAAM;8BACQ,aAAa;2DAAC;AANZ,oBAAoB;IADxC,cAAc;GACM,oBAAoB,CAwDxC;eAxDoB,oBAAoB"}