@social-mail/social-mail-web-server 1.8.67 → 1.8.73

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 (43) hide show
  1. package/dist/common/globalEnv.d.ts +1 -0
  2. package/dist/common/globalEnv.d.ts.map +1 -1
  3. package/dist/common/globalEnv.js +1 -0
  4. package/dist/common/globalEnv.js.map +1 -1
  5. package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.d.ts +1 -1
  6. package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.d.ts.map +1 -1
  7. package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.js +1 -1
  8. package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.js.map +1 -1
  9. package/dist/server/model/entities/VerificationToken.d.ts +1 -0
  10. package/dist/server/model/entities/VerificationToken.d.ts.map +1 -1
  11. package/dist/server/model/entities/VerificationToken.js +4 -0
  12. package/dist/server/model/entities/VerificationToken.js.map +1 -1
  13. package/dist/server/model/events/VerificationTokenEvents.d.ts +4 -3
  14. package/dist/server/model/events/VerificationTokenEvents.d.ts.map +1 -1
  15. package/dist/server/model/events/VerificationTokenEvents.js +21 -50
  16. package/dist/server/model/events/VerificationTokenEvents.js.map +1 -1
  17. package/dist/server/seed/seed.d.ts.map +1 -1
  18. package/dist/server/seed/seed.js +4 -0
  19. package/dist/server/seed/seed.js.map +1 -1
  20. package/dist/server/seed/ui/seed-ui.js +1 -1
  21. package/dist/server/services/store/gateways/paypal.d.ts +13 -3
  22. package/dist/server/services/store/gateways/paypal.d.ts.map +1 -1
  23. package/dist/server/services/store/gateways/paypal.js +120 -49
  24. package/dist/server/services/store/gateways/paypal.js.map +1 -1
  25. package/dist/server/services/user/email-verification/EmailVerificationService.d.ts +17 -0
  26. package/dist/server/services/user/email-verification/EmailVerificationService.d.ts.map +1 -0
  27. package/dist/server/services/user/email-verification/EmailVerificationService.js +80 -0
  28. package/dist/server/services/user/email-verification/EmailVerificationService.js.map +1 -0
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/dist/wwwroot/routes/social-mail/site/signup/post.d.ts +4 -1
  31. package/dist/wwwroot/routes/social-mail/site/signup/post.d.ts.map +1 -1
  32. package/dist/wwwroot/routes/social-mail/site/signup/post.js +37 -6
  33. package/dist/wwwroot/routes/social-mail/site/signup/post.js.map +1 -1
  34. package/package.json +3 -2
  35. package/src/common/globalEnv.ts +1 -0
  36. package/src/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.tsx +1 -1
  37. package/src/server/model/entities/VerificationToken.ts +3 -0
  38. package/src/server/model/events/VerificationTokenEvents.ts +19 -52
  39. package/src/server/seed/seed.ts +4 -0
  40. package/src/server/seed/ui/seed-ui.ts +1 -1
  41. package/src/server/services/store/gateways/paypal.tsx +136 -54
  42. package/src/server/services/user/email-verification/EmailVerificationService.ts +78 -0
  43. package/src/wwwroot/routes/social-mail/site/signup/post.tsx +39 -7
@@ -7,74 +7,145 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  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
- import Inject from "@entity-access/entity-access/dist/di/di.js";
10
+ import Inject, { RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
11
11
  import EncryptionService from "../../encryption/EncryptionService.js";
12
12
  import LedgerPaymentGateway from "../LedgerPaymentGateway.js";
13
- import FetchBuilder from "@web-atoms/fetch-builder";
14
13
  import SocialMailContext from "../../../model/SocialMailContext.js";
15
- import Content from "@entity-access/server-pages/dist/Content.js";
16
- import HtmlDocument from "@entity-access/server-pages/dist/html/HtmlDocument.js";
17
- import XNode from "@entity-access/server-pages/dist/html/XNode.js";
14
+ import { CaptureStatus, CheckoutPaymentIntent, Client, Environment, OrdersController, OrderStatus, PayeePaymentMethodPreference, PaypalExperienceLandingPage, PaypalExperienceUserAction } from "@paypal/paypal-server-sdk";
15
+ import TimedCache from "@entity-access/entity-access/dist/common/cache/TimedCache.js";
16
+ let PaypalClientCache = class PaypalClientCache {
17
+ constructor() {
18
+ this.cache = new TimedCache();
19
+ }
20
+ getClient(gateway) {
21
+ return this.cache.getOrCreate(gateway.accountID, gateway, (k, p) => {
22
+ const secret = this.ecs.secure.decrypt(p.encryptedSecret);
23
+ return new Client({
24
+ environment: gateway.url ? Environment.Sandbox : Environment.Production,
25
+ clientCredentialsAuthCredentials: {
26
+ oAuthClientId: gateway.clientID,
27
+ oAuthClientSecret: secret
28
+ }
29
+ });
30
+ });
31
+ }
32
+ };
33
+ __decorate([
34
+ Inject,
35
+ __metadata("design:type", EncryptionService)
36
+ ], PaypalClientCache.prototype, "ecs", void 0);
37
+ PaypalClientCache = __decorate([
38
+ RegisterSingleton
39
+ ], PaypalClientCache);
18
40
  export default class default_1 extends LedgerPaymentGateway {
19
41
  async createPayment(host, gateway, order, pa) {
20
- const secret = this.ecs.secure.decrypt(gateway.encryptedSecret);
21
42
  const pID = this.ecs.general.encrypt(pa.attemptID.toString());
22
43
  const items = await this.db.storeJournalLineItems.where(order, (p) => (x) => x.journalID === p.journalID)
23
44
  .include((x) => x.itemPrice.storeItem)
24
45
  .toArray();
25
- const { emailAddress: { emailAddress: email_address } } = await this.db.storeAccountEmails
46
+ const client = this.pc.getClient(gateway);
47
+ const { emailAddress: { emailAddress: emailAddress } } = await this.db.storeAccountEmails
26
48
  .where(order, (p) => (x) => x.accountID === p.buyerID)
27
49
  .include((x) => x.emailAddress)
28
50
  .first();
29
- const pr = await FetchBuilder.url("https://api-m.paypal.com")
30
- .post("/v2/checkout/orders")
31
- .header("Authorization", `Bearer ${Buffer.from(`${gateway.clientID}:${secret}`).toString("base64")}`)
32
- .jsonBody({
33
- intent: "CAPTURE",
34
- payment_source: {
35
- paypal: {
36
- experience_context: {
37
- payment_method_preference: "IMMEDIATE_PAYMENT_REQUIRED",
38
- payment_method_selected: "PAYPAL",
39
- brand_name: host,
40
- landing_page: "LOGIN",
41
- user_action: "PAY_NOW",
42
- return_url: `https://${host}/store/checkout-callback/${pID}`,
43
- cancel_url: `https://${host}/store/checkout-callback/${pID}`,
44
- },
45
- email_address
46
- }
47
- },
48
- purchase_units: [{
49
- invoice_id: `${order.journalID}`,
50
- reference_id: `${order.journalID}`,
51
- amount: order.total,
52
- items: items.map((x) => ({
53
- name: x.item.name,
54
- quantity: x.quantity || 1,
55
- currency: x.itemPrice.currency,
56
- unit_amount: (Number(x.total) / x.quantity).toFixed(2),
57
- }))
58
- }]
59
- }).asJson();
60
- const link = pr.links.find((x) => x.rel === "payer-action");
61
- return Content.html(XNode.create(HtmlDocument, null,
62
- XNode.create("head", null,
63
- XNode.create("title", null, "Preparing Paypal Order")),
64
- XNode.create("body", null,
65
- XNode.create("script", null,
66
- "location.href = ",
67
- JSON.stringify(link.href),
68
- ";"))));
51
+ const orders = new OrdersController(client);
52
+ const currencyCode = items[0].itemPrice.currency;
53
+ const returnUrl = `https://${host}/store/checkout-callback/${pID}`;
54
+ const cancelUrl = `https://${host}/store/checkout-callback/${pID}`;
55
+ const pr = await orders.createOrder({
56
+ body: {
57
+ intent: CheckoutPaymentIntent.Capture,
58
+ paymentSource: {
59
+ paypal: {
60
+ experienceContext: {
61
+ paymentMethodPreference: PayeePaymentMethodPreference.ImmediatePaymentRequired,
62
+ brandName: host,
63
+ landingPage: PaypalExperienceLandingPage.NoPreference,
64
+ userAction: PaypalExperienceUserAction.PayNow,
65
+ returnUrl,
66
+ cancelUrl,
67
+ },
68
+ emailAddress
69
+ }
70
+ },
71
+ // applicationContext: {
72
+ // brandName: host,
73
+ // paymentMethod: {
74
+ // payeePreferred: PayeePaymentMethodPreference.Unrestricted,
75
+ // },
76
+ // landingPage: OrderApplicationContextLandingPage.Billing,
77
+ // userAction: OrderApplicationContextUserAction.PayNow,
78
+ // returnUrl,
79
+ // cancelUrl,
80
+ // },
81
+ purchaseUnits: [{
82
+ invoiceId: `${order.journalID}`,
83
+ referenceId: `${order.journalID}`,
84
+ amount: {
85
+ currencyCode,
86
+ value: order.total.toString(2),
87
+ breakdown: {
88
+ itemTotal: {
89
+ currencyCode,
90
+ value: order.total.toString(2)
91
+ }
92
+ }
93
+ },
94
+ items: items.map((x) => ({
95
+ name: x.item.name,
96
+ quantity: Number(`${x.quantity || 1}`).toFixed(0),
97
+ currency: x.itemPrice.currency,
98
+ unitAmount: {
99
+ currencyCode,
100
+ value: (Number(x.total) / x.quantity).toFixed(2)
101
+ },
102
+ }))
103
+ }]
104
+ }
105
+ });
106
+ const link = pr.result.links.find((x) => x.rel === "payer-action");
107
+ pa.externalID = pr.result.id;
108
+ await this.db.storePaymentAttempts.statements.update({ externalID: pa.externalID }, { attemptID: pa.attemptID });
109
+ return {
110
+ url: link.href
111
+ };
112
+ // return Content.html(<HtmlDocument>
113
+ // <head>
114
+ // <title>Preparing Paypal Order</title>
115
+ // </head>
116
+ // <body>
117
+ // <script>
118
+ // location.href = {JSON.stringify(link.href)};
119
+ // </script>
120
+ // </body>
121
+ // </HtmlDocument>);
69
122
  }
70
- isSuccessful(pa) {
71
- throw new Error("Method not implemented.");
123
+ async isSuccessful(pa) {
124
+ const { gateway, externalID: id } = pa;
125
+ const client = this.pc.getClient(gateway);
126
+ const oc = new OrdersController(client);
127
+ let pr = await oc.getOrder({ id });
128
+ if (pr.result.status === OrderStatus.Approved) {
129
+ // let us capture...
130
+ pr = await oc.captureOrder({ id });
131
+ }
132
+ return pr.result
133
+ .purchaseUnits
134
+ .every((x) => x.payments
135
+ .captures
136
+ .every((c) => c.status === CaptureStatus.Completed));
137
+ // console.log(captures);
138
+ // throw new Error("Method not implemented.");
72
139
  }
73
140
  }
74
141
  __decorate([
75
142
  Inject,
76
143
  __metadata("design:type", EncryptionService)
77
144
  ], default_1.prototype, "ecs", void 0);
145
+ __decorate([
146
+ Inject,
147
+ __metadata("design:type", PaypalClientCache)
148
+ ], default_1.prototype, "pc", void 0);
78
149
  __decorate([
79
150
  Inject,
80
151
  __metadata("design:type", SocialMailContext)
@@ -1 +1 @@
1
- {"version":3,"file":"paypal.js","sourceRoot":"","sources":["../../../../../src/server/services/store/gateways/paypal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paypal.js","sourceRoot":"","sources":["../../../../../src/server/services/store/gateways/paypal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import VerificationToken from "../../../model/entities/VerificationToken.js";
2
+ import SocialMailContext from "../../../model/SocialMailContext.js";
3
+ import EmailAddressService from "../../EmailAddressService.js";
4
+ import MailService from "../../emails/MailService.js";
5
+ import SessionSecurity from "@entity-access/server-pages/dist/services/SessionSecurity.js";
6
+ export default class EmailVerificationService {
7
+ db: SocialMailContext;
8
+ eas: EmailAddressService;
9
+ ms: MailService;
10
+ sessionSecurity: SessionSecurity;
11
+ create({ email, ipAddress }: {
12
+ email: any;
13
+ ipAddress: any;
14
+ }): Promise<VerificationToken>;
15
+ send(entity: VerificationToken): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=EmailVerificationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailVerificationService.d.ts","sourceRoot":"","sources":["../../../../../src/server/services/user/email-verification/EmailVerificationService.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,8CAA8C,CAAC;AAG7E,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAI3F,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAGzC,EAAE,EAAE,iBAAiB,CAAC;IAGtB,GAAG,EAAE,mBAAmB,CAAC;IAGzB,EAAE,EAAE,WAAW,CAAC;IAGhB,eAAe,EAAE,eAAe,CAAC;IAE3B,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;;;KAAA;IAyB3B,IAAI,CAAC,MAAM,EAAE,iBAAiB;CA2BvC"}
@@ -0,0 +1,80 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import Inject, { RegisterScoped } from "@entity-access/entity-access/dist/di/di.js";
11
+ import EntityAccessError from "@entity-access/entity-access/dist/common/EntityAccessError.js";
12
+ import { globalEnv } from "../../../../common/globalEnv.js";
13
+ import SocialMailContext from "../../../model/SocialMailContext.js";
14
+ import EmailAddressService from "../../EmailAddressService.js";
15
+ import MailService from "../../emails/MailService.js";
16
+ import SessionSecurity from "@entity-access/server-pages/dist/services/SessionSecurity.js";
17
+ import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
18
+ let EmailVerificationService = class EmailVerificationService {
19
+ async create({ email, ipAddress }) {
20
+ let code = Date.now().toString();
21
+ code = code.substring(code.length - 5);
22
+ console.log(`Email Code is ${code}`);
23
+ const v = await this.db.verificationTokens.statements.insert({
24
+ type: "email",
25
+ email,
26
+ code,
27
+ dateCreated: DateTime.now,
28
+ ipAddress
29
+ });
30
+ // send..
31
+ await this.send(v);
32
+ this.sessionSecurity.injectPublicKey(v);
33
+ v.code = void 0;
34
+ v.ipAddress = void 0;
35
+ return v;
36
+ }
37
+ async send(entity) {
38
+ if (entity.type !== "email") {
39
+ throw new EntityAccessError(`Invalid verification type`);
40
+ }
41
+ const senderEmail = globalEnv.senderEmailForNotification;
42
+ if (!senderEmail) {
43
+ throw new EntityAccessError(`Sender for Notification is not set, cannot send email.`);
44
+ }
45
+ const textBody = `Social Mail Verification Code for your request is ${entity.code}`;
46
+ const htmlBody = `<pre>Social Mail Verification Code for<br/>your request is ${entity.code}</pre>`;
47
+ const { eas, ms } = this;
48
+ const hosted = await eas.getHostedMailboxID(senderEmail);
49
+ await ms.sendNotificationEmail(`notify-email-${entity.verificationID}-${Date.now().toFixed(0)}`, {
50
+ from: senderEmail,
51
+ fromName: "Social Mail Verification Code",
52
+ subject: "Social Mail Verification Code",
53
+ htmlBody,
54
+ textBody,
55
+ to: entity.email,
56
+ external: !hosted
57
+ });
58
+ }
59
+ };
60
+ __decorate([
61
+ Inject,
62
+ __metadata("design:type", SocialMailContext)
63
+ ], EmailVerificationService.prototype, "db", void 0);
64
+ __decorate([
65
+ Inject,
66
+ __metadata("design:type", EmailAddressService)
67
+ ], EmailVerificationService.prototype, "eas", void 0);
68
+ __decorate([
69
+ Inject,
70
+ __metadata("design:type", MailService)
71
+ ], EmailVerificationService.prototype, "ms", void 0);
72
+ __decorate([
73
+ Inject,
74
+ __metadata("design:type", SessionSecurity)
75
+ ], EmailVerificationService.prototype, "sessionSecurity", void 0);
76
+ EmailVerificationService = __decorate([
77
+ RegisterScoped
78
+ ], EmailVerificationService);
79
+ export default EmailVerificationService;
80
+ //# sourceMappingURL=EmailVerificationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailVerificationService.js","sourceRoot":"","sources":["../../../../../src/server/services/user/email-verification/EmailVerificationService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAmB,MAAM,4CAA4C,CAAC;AAErG,OAAO,iBAAiB,MAAM,+DAA+D,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAC3F,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAG5D,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAczC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;QAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAErC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC;YACzD,IAAI,EAAE,OAAO;YACb,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,QAAQ,CAAC,GAAG;YACzB,SAAS;SACZ,CAAC,CAAC;QAEH,SAAS;QACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACb,CAAC;IAGD,KAAK,CAAC,IAAI,CAAC,MAAyB;QAChC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,0BAA0B,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,iBAAiB,CAAC,wDAAwD,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,QAAQ,GAAG,qDAAqD,MAAM,CAAC,IAAI,EAAE,CAAC;QACpF,MAAM,QAAQ,GAAG,8DAA8D,MAAM,CAAC,IAAI,QAAQ,CAAC;QAEnG,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAEzD,MAAM,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7F,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,+BAA+B;YACzC,OAAO,EAAE,+BAA+B;YACxC,QAAQ;YACR,QAAQ;YACR,EAAE,EAAE,MAAM,CAAC,KAAK;YAChB,QAAQ,EAAE,CAAC,MAAM;SACpB,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA/DG;IADC,MAAM;8BACH,iBAAiB;oDAAC;AAGtB;IADC,MAAM;8BACF,mBAAmB;qDAAC;AAGzB;IADC,MAAM;8BACH,WAAW;oDAAC;AAGhB;IADC,MAAM;8BACU,eAAe;iEAAC;AAZhB,wBAAwB;IAD5C,cAAc;GACM,wBAAwB,CAkE5C;eAlEoB,wBAAwB"}