@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.
- package/dist/server/model/entities/VerificationToken.d.ts +5 -0
- package/dist/server/model/entities/VerificationToken.d.ts.map +1 -1
- package/dist/server/model/entities/VerificationToken.js +15 -1
- package/dist/server/model/entities/VerificationToken.js.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.d.ts +3 -0
- package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
- package/dist/server/model/events/VerificationTokenEvents.js +74 -0
- package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
- package/dist/server/services/external-otp-in/ExternalOtpInService.d.ts +5 -0
- package/dist/server/services/external-otp-in/ExternalOtpInService.d.ts.map +1 -1
- package/dist/server/services/external-otp-in/ExternalOtpInService.js +19 -20
- package/dist/server/services/external-otp-in/ExternalOtpInService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/shop/order/checkout/get.d.ts +5 -0
- package/dist/wwwroot/routes/shop/order/checkout/get.d.ts.map +1 -0
- package/dist/wwwroot/routes/shop/order/checkout/get.js +8 -0
- package/dist/wwwroot/routes/shop/order/checkout/get.js.map +1 -0
- package/dist/wwwroot/routes/social-mail/store/order/buy/post.d.ts +7 -0
- package/dist/wwwroot/routes/social-mail/store/order/buy/post.d.ts.map +1 -0
- package/dist/wwwroot/routes/social-mail/store/order/buy/post.js +24 -0
- package/dist/wwwroot/routes/social-mail/store/order/buy/post.js.map +1 -0
- package/package.json +5 -4
- package/src/server/model/entities/VerificationToken.ts +15 -1
- package/src/server/model/events/VerificationTokenEvents.ts +77 -1
- package/src/server/services/external-otp-in/ExternalOtpInService.ts +22 -19
- package/src/wwwroot/routes/shop/order/checkout/get.tsx +11 -0
- 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;
|
|
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;
|
|
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,
|
|
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;
|
|
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;
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
52
|
-
|
|
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;
|
|
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"}
|