@hartl-services/medusa-base 2.0.0 → 2.1.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 (33) hide show
  1. package/.medusa/server/src/admin/index.js +3 -1
  2. package/.medusa/server/src/admin/index.mjs +3 -1
  3. package/.medusa/server/src/api/customer-verification-request-throttle.js +50 -0
  4. package/.medusa/server/src/api/middlewares.js +31 -1
  5. package/.medusa/server/src/api/store/customer-verification/resend/route.js +17 -0
  6. package/.medusa/server/src/email/application/handle-customer-verification-event.js +341 -0
  7. package/.medusa/server/src/email/application/resend-customer-verification.js +65 -0
  8. package/.medusa/server/src/email/application/start-customer-verification-snapshot.js +21 -0
  9. package/.medusa/server/src/email/application/throttle-verification-request.js +49 -0
  10. package/.medusa/server/src/email/customer-verification-snapshot.js +144 -0
  11. package/.medusa/server/src/email/domain/business-keys.js +12 -2
  12. package/.medusa/server/src/email/domain/customer-verification-resend.js +37 -0
  13. package/.medusa/server/src/email/domain/event-schemas.js +18 -2
  14. package/.medusa/server/src/email/plugin-features.js +9 -2
  15. package/.medusa/server/src/email/rendering/default-templates.js +20 -1
  16. package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +5 -1
  17. package/.medusa/server/src/email/types/email-kinds.js +14 -2
  18. package/.medusa/server/src/email/types/template-data.js +9 -1
  19. package/.medusa/server/src/modules/email/migrations/Migration20261001090000.js +16 -0
  20. package/.medusa/server/src/modules/email/service.js +30 -8
  21. package/.medusa/server/src/shop-config/build-food-shop-config.js +16 -1
  22. package/.medusa/server/src/subscribers/customer-verification.js +23 -0
  23. package/.medusa/server/src/workflows/email/dispatch-email-message.js +4 -2
  24. package/README.md +140 -15
  25. package/dist/email/customer-verification-snapshot.d.ts +53 -0
  26. package/dist/email/customer-verification-snapshot.js +143 -0
  27. package/dist/email/types/email-kinds.d.ts +9 -1
  28. package/dist/email/types/email-kinds.js +13 -1
  29. package/dist/email/types/shop-configuration.d.ts +8 -0
  30. package/dist/email/types/template-data.d.ts +9 -0
  31. package/dist/email/types/template-data.js +8 -0
  32. package/dist/shop-config/build-food-shop-config.js +15 -0
  33. package/package.json +2 -2
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startCustomerVerification = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const public_1 = require("../../public");
6
+ const customer_verification_snapshot_1 = require("../customer-verification-snapshot");
7
+ const plugin_features_1 = require("../plugin-features");
8
+ /**
9
+ * Hands the snapshot behind `authVerificationsPerActor` its reader (the
10
+ * effective `customer_verification` toggle) and loads it once. Called when
11
+ * the application has started, with the application container: the config
12
+ * getter that needs the toggle has no container of its own.
13
+ */
14
+ const startCustomerVerification = (container) => (0, customer_verification_snapshot_1.startCustomerVerificationSnapshot)({
15
+ read: () => (0, public_1.isPluginFeatureEnabled)(container, plugin_features_1.emailPluginFeatures, "account_mails", "customer_verification"),
16
+ warn: (message) => container
17
+ .resolve(utils_1.ContainerRegistrationKeys.LOGGER)
18
+ .warn(message),
19
+ });
20
+ exports.startCustomerVerification = startCustomerVerification;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtY3VzdG9tZXItdmVyaWZpY2F0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2FwcGxpY2F0aW9uL3N0YXJ0LWN1c3RvbWVyLXZlcmlmaWNhdGlvbi1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBc0U7QUFFdEUseUNBQXNEO0FBQ3RELHNGQUFzRjtBQUN0Rix3REFBeUQ7QUFFekQ7Ozs7O0dBS0c7QUFDSSxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLFNBQTBCLEVBQ1gsRUFBRSxDQUNqQixJQUFBLGtFQUFpQyxFQUFDO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FDVCxJQUFBLCtCQUFzQixFQUNwQixTQUFTLEVBQ1QscUNBQW1CLEVBQ25CLGVBQWUsRUFDZix1QkFBdUIsQ0FDeEI7SUFDSCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNoQixTQUFTO1NBQ04sT0FBTyxDQUFTLGlDQUF5QixDQUFDLE1BQU0sQ0FBQztTQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDO0NBQ25CLENBQUMsQ0FBQztBQWZRLFFBQUEseUJBQXlCLDZCQWVqQyJ9
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findThrottledVerificationRequest = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const customer_verification_resend_1 = require("../domain/customer-verification-resend");
6
+ /**
7
+ * `POST /auth/verification/request` is Medusa's own route and the storefront
8
+ * calls it at every blocked login. Whether the request must be answered
9
+ * without sending a mail: for the identity's own e-mail address of a customer
10
+ * account whose last request is younger than the resend interval. Anything
11
+ * else (another actor, a foreign address, no row, a confirmed address) is
12
+ * left to Medusa. Never answers with the token hash Medusa stores in
13
+ * `provider_metadata`.
14
+ */
15
+ const findThrottledVerificationRequest = async (container, input, now = new Date()) => {
16
+ const auth = container.resolve(utils_1.Modules.AUTH);
17
+ const identity = await auth.retrieveAuthIdentity(input.authIdentityId, {
18
+ select: ["id", "app_metadata"],
19
+ relations: ["provider_identities"],
20
+ });
21
+ const customerId = identity.app_metadata
22
+ ?.customer_id;
23
+ const ownsAddress = (identity.provider_identities ?? []).some((providerIdentity) => providerIdentity.provider === "emailpass" &&
24
+ providerIdentity.entity_id === input.entityId);
25
+ if (!ownsAddress || typeof customerId !== "string" || !customerId) {
26
+ return null;
27
+ }
28
+ const [verification] = await auth.listAuthVerifications({
29
+ auth_identity_id: identity.id,
30
+ entity_id: input.entityId,
31
+ entity_type: "email",
32
+ }, { take: 1 });
33
+ if (!verification ||
34
+ (0, customer_verification_resend_1.decideCustomerVerificationResend)({ now, verification }) !== "throttled") {
35
+ return null;
36
+ }
37
+ return {
38
+ auth_identity_id: identity.id,
39
+ code_provider: verification.code_provider,
40
+ entity_id: verification.entity_id,
41
+ entity_type: verification.entity_type,
42
+ id: verification.id,
43
+ metadata: verification.metadata ?? null,
44
+ requested_at: verification.requested_at,
45
+ verified_at: verification.verified_at ?? null,
46
+ };
47
+ };
48
+ exports.findThrottledVerificationRequest = findThrottledVerificationRequest;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUtdmVyaWZpY2F0aW9uLXJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvYXBwbGljYXRpb24vdGhyb3R0bGUtdmVyaWZpY2F0aW9uLXJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBQW9EO0FBRXBELHlGQUEwRjtBQWMxRjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0sZ0NBQWdDLEdBQUcsS0FBSyxFQUNuRCxTQUEwQixFQUMxQixLQUdFLEVBQ0YsTUFBWSxJQUFJLElBQUksRUFBRSxFQUNpQixFQUFFO0lBQ3pDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQXFCLGVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO1FBQ3JFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7UUFDOUIsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUksUUFBUSxDQUFDLFlBQStDO1FBQzFFLEVBQUUsV0FBVyxDQUFDO0lBQ2hCLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0QsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQ25CLGdCQUFnQixDQUFDLFFBQVEsS0FBSyxXQUFXO1FBQ3pDLGdCQUFnQixDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsUUFBUSxDQUNoRCxDQUFDO0lBQ0YsSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQ3JEO1FBQ0UsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEVBQUU7UUFDN0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3pCLFdBQVcsRUFBRSxPQUFPO0tBQ3JCLEVBQ0QsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ1osQ0FBQztJQUNGLElBQ0UsQ0FBQyxZQUFZO1FBQ2IsSUFBQSwrREFBZ0MsRUFBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQyxLQUFLLFdBQVcsRUFDdkUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUM3QixhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7UUFDekMsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTO1FBQ2pDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztRQUNyQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQVk7UUFDN0IsUUFBUSxFQUFFLFlBQVksQ0FBQyxRQUFRLElBQUksSUFBSTtRQUN2QyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVk7UUFDdkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXLElBQUksSUFBSTtLQUM5QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBL0NXLFFBQUEsZ0NBQWdDLG9DQStDM0MifQ==
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setCustomerVerificationEnabledForTests = exports.customerVerificationActors = exports.isCustomerVerificationEnabled = exports.startCustomerVerificationSnapshot = exports.stopCustomerVerificationSnapshot = exports.refreshCustomerVerificationSnapshot = exports.CUSTOMER_VERIFICATION_REFRESH_MS = void 0;
4
+ /**
5
+ * In-memory copy of the effective `customer_verification` toggle for the one
6
+ * place that cannot await it: Medusa reads
7
+ * `projectConfig.http.authVerificationsPerActor.customer` synchronously on
8
+ * every login. The shop preset puts `customerVerificationActors()` behind a
9
+ * getter there, so a toggle change in the Admin takes effect without a
10
+ * restart.
11
+ *
12
+ * - Boot: `startCustomerVerificationSnapshot` loads the toggle once.
13
+ * - Afterwards an unref'd timer refreshes every 30 s, so a change reaches an
14
+ * idle instance too. A read that finds the copy older than 30 s (a blocked
15
+ * timer, say) also starts one refresh in the background
16
+ * (stale-while-revalidate) and still answers from the copy. A change thus
17
+ * reaches a running instance within about 30 s plus the duration of the
18
+ * read.
19
+ * - A failed read keeps the last value (initially "off") and is logged; the
20
+ * next attempt waits another 30 s.
21
+ *
22
+ * The state lives on `globalThis`: the preset (`dist`) and the Medusa-loaded
23
+ * plugin code (`.medusa/server`) are compiled separately and would otherwise
24
+ * each hold their own copy. Login is not on the cart path.
25
+ */
26
+ exports.CUSTOMER_VERIFICATION_REFRESH_MS = 30_000;
27
+ const STATE_KEY = Symbol.for("@hartl-services/medusa-base/customer-verification-snapshot");
28
+ const state = () => {
29
+ const holder = globalThis;
30
+ holder[STATE_KEY] ??= {
31
+ enabled: false,
32
+ refreshedAt: null,
33
+ refreshing: null,
34
+ timer: null,
35
+ read: null,
36
+ warn: null,
37
+ };
38
+ return holder[STATE_KEY];
39
+ };
40
+ const logFailure = (current, error) => {
41
+ try {
42
+ current.warn?.(`Customer verification toggle could not be read, keeping "${current.enabled ? "on" : "off"}": ${error instanceof Error ? error.message : "unknown error"}`);
43
+ }
44
+ catch {
45
+ // A broken logger must not turn a failed refresh into a throw.
46
+ }
47
+ };
48
+ /** Reads the toggle once; never rejects. Concurrent calls share one read. */
49
+ const refreshCustomerVerificationSnapshot = () => {
50
+ const current = state();
51
+ if (!current.read) {
52
+ return Promise.resolve();
53
+ }
54
+ if (current.refreshing) {
55
+ return current.refreshing;
56
+ }
57
+ const read = current.read;
58
+ // Started from a microtask so the assignment below always precedes `finally`.
59
+ const refreshing = Promise.resolve().then(async () => {
60
+ try {
61
+ current.enabled = (await read()) === true;
62
+ }
63
+ catch (error) {
64
+ logFailure(current, error);
65
+ }
66
+ finally {
67
+ current.refreshedAt = Date.now();
68
+ current.refreshing = null;
69
+ }
70
+ });
71
+ current.refreshing = refreshing;
72
+ return refreshing;
73
+ };
74
+ exports.refreshCustomerVerificationSnapshot = refreshCustomerVerificationSnapshot;
75
+ const stopTimer = (current) => {
76
+ if (current.timer) {
77
+ clearInterval(current.timer);
78
+ current.timer = null;
79
+ }
80
+ };
81
+ /** Stops the periodic refresh (application shutdown). The value stays. */
82
+ const stopCustomerVerificationSnapshot = () => {
83
+ stopTimer(state());
84
+ };
85
+ exports.stopCustomerVerificationSnapshot = stopCustomerVerificationSnapshot;
86
+ /**
87
+ * Registers the reader, loads the toggle once and keeps it fresh every 30 s
88
+ * (application start). `read` returns the effective toggle; `warn` is the
89
+ * container logger. Starting again replaces the reader and the timer.
90
+ */
91
+ const startCustomerVerificationSnapshot = (input) => {
92
+ const current = state();
93
+ current.read = input.read;
94
+ current.warn = input.warn;
95
+ stopTimer(current);
96
+ current.timer = setInterval(() => {
97
+ void (0, exports.refreshCustomerVerificationSnapshot)();
98
+ }, exports.CUSTOMER_VERIFICATION_REFRESH_MS);
99
+ // An idle timer must not keep the process (or a test run) alive.
100
+ current.timer.unref();
101
+ return (0, exports.refreshCustomerVerificationSnapshot)();
102
+ };
103
+ exports.startCustomerVerificationSnapshot = startCustomerVerificationSnapshot;
104
+ /** Synchronous; starts a background refresh when the copy is stale. Never throws. */
105
+ const isCustomerVerificationEnabled = () => {
106
+ const current = state();
107
+ if (current.read &&
108
+ !current.refreshing &&
109
+ (current.refreshedAt === null ||
110
+ Date.now() - current.refreshedAt >= exports.CUSTOMER_VERIFICATION_REFRESH_MS)) {
111
+ void (0, exports.refreshCustomerVerificationSnapshot)();
112
+ }
113
+ return current.enabled;
114
+ };
115
+ exports.isCustomerVerificationEnabled = isCustomerVerificationEnabled;
116
+ /**
117
+ * The value of `authVerificationsPerActor.customer`: Medusa's e-mail
118
+ * verification for the `emailpass` provider while the toggle is on, none
119
+ * while it is off. A fresh array per call.
120
+ */
121
+ const customerVerificationActors = () => (0, exports.isCustomerVerificationEnabled)()
122
+ ? [{ auth_provider: "emailpass", entity_type: "email" }]
123
+ : [];
124
+ exports.customerVerificationActors = customerVerificationActors;
125
+ /**
126
+ * Test hook: sets the value and counts as just refreshed, so it holds for
127
+ * 30 s without a reader; `null` forgets reader and value.
128
+ */
129
+ const setCustomerVerificationEnabledForTests = (enabled) => {
130
+ const current = state();
131
+ if (enabled === null) {
132
+ stopTimer(current);
133
+ current.enabled = false;
134
+ current.refreshedAt = null;
135
+ current.refreshing = null;
136
+ current.read = null;
137
+ current.warn = null;
138
+ return;
139
+ }
140
+ current.enabled = enabled;
141
+ current.refreshedAt = Date.now();
142
+ };
143
+ exports.setCustomerVerificationEnabledForTests = setCustomerVerificationEnabledForTests;
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdmVyaWZpY2F0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2N1c3RvbWVyLXZlcmlmaWNhdGlvbi1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7QUFpQnZELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQzFCLDREQUE0RCxDQUM3RCxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsR0FBa0IsRUFBRTtJQUNoQyxNQUFNLE1BQU0sR0FBRyxVQUFzRCxDQUFDO0lBQ3RFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQXNCLEVBQUUsS0FBYyxFQUFRLEVBQUU7SUFDbEUsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNaLDREQUNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FDM0IsTUFBTSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwrREFBK0Q7SUFDakUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDZFQUE2RTtBQUN0RSxNQUFN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
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.adminResendBusinessKey = exports.affiliateConsignmentBusinessKey = exports.userInviteBusinessKey = exports.passwordResetBusinessKey = exports.orderRefundedBusinessKey = exports.returnReceivedBusinessKey = exports.returnRequestedBusinessKey = exports.orderCanceledBusinessKey = exports.orderShippedBusinessKey = exports.orderReceivedAdminBusinessKey = exports.orderReceivedBusinessKey = void 0;
3
+ exports.adminResendBusinessKey = exports.affiliateConsignmentBusinessKey = exports.userInviteBusinessKey = exports.customerVerificationBusinessKey = exports.passwordResetBusinessKey = exports.orderRefundedBusinessKey = exports.returnReceivedBusinessKey = exports.returnRequestedBusinessKey = exports.orderCanceledBusinessKey = exports.orderShippedBusinessKey = exports.orderReceivedAdminBusinessKey = exports.orderReceivedBusinessKey = void 0;
4
4
  const node_crypto_1 = require("node:crypto");
5
5
  const affiliate_1 = require("@hartl-services/medusa-food-supplements-contracts/events/affiliate");
6
6
  const normalizedIdentifier = (value, name) => {
@@ -32,6 +32,16 @@ const passwordResetBusinessKey = (token) => {
32
32
  return `password-reset:${tokenHash}`;
33
33
  };
34
34
  exports.passwordResetBusinessKey = passwordResetBusinessKey;
35
+ const customerVerificationBusinessKey = (token) => {
36
+ if (!token) {
37
+ throw new Error("token must not be empty.");
38
+ }
39
+ // Keyed by the token's hash, never the token: every new request issues a
40
+ // new token and must produce a new message, as with password-reset.
41
+ const tokenHash = (0, node_crypto_1.createHash)("sha256").update(token, "utf8").digest("hex");
42
+ return `customer-verification:${tokenHash}`;
43
+ };
44
+ exports.customerVerificationBusinessKey = customerVerificationBusinessKey;
35
45
  const userInviteBusinessKey = (token) => {
36
46
  if (!token) {
37
47
  throw new Error("token must not be empty.");
@@ -47,4 +57,4 @@ const affiliateConsignmentBusinessKey = (affiliateId, periodStart) => (0, affili
47
57
  exports.affiliateConsignmentBusinessKey = affiliateConsignmentBusinessKey;
48
58
  const adminResendBusinessKey = (originalMessageId, requestId) => `admin-resend:${normalizedIdentifier(originalMessageId, "originalMessageId")}:${normalizedIdentifier(requestId, "requestId")}`;
49
59
  exports.adminResendBusinessKey = adminResendBusinessKey;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3Mta2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vYnVzaW5lc3Mta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUM7QUFFekMsa0dBQTJIO0FBRTNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDbEUsa0JBQWtCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRGxELFFBQUEsd0JBQXdCLDRCQUMwQjtBQUV4RCxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDdkUsd0JBQXdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRHhELFFBQUEsNkJBQTZCLGlDQUMyQjtBQUU5RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUQ3RCxRQUFBLHVCQUF1QiwyQkFDc0M7QUFFbkUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ2xFLGtCQUFrQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQURsRCxRQUFBLHdCQUF3Qiw0QkFDMEI7QUFFeEQsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLFFBQWdCLEVBQVUsRUFBRSxDQUNyRSxvQkFBb0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFEdEQsUUFBQSwwQkFBMEIsOEJBQzRCO0FBRTVELE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUUsQ0FDcEUsbUJBQW1CLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO0FBRHJELFFBQUEseUJBQXlCLDZCQUM0QjtBQUUzRCxNQUFNLHdCQUF3QixHQUFHLENBQUMsUUFBZ0IsRUFBVSxFQUFFLENBQ25FLFVBQVUsb0JBQW9CLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7QUFENUMsUUFBQSx3QkFBd0IsNEJBQ29CO0FBRWxELE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTtJQUNoRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRSxPQUFPLGtCQUFrQixTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFOVyxRQUFBLHdCQUF3Qiw0QkFNbkM7QUFFSyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7SUFDN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCx1RUFBdUU7SUFDdkUseUVBQXlFO0lBQ3pFLHdEQUF3RDtJQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0UsT0FBTyxlQUFlLFNBQVMsRUFBRSxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQVRXLFFBQUEscUJBQXFCLHlCQVNoQztBQUVLLE1BQU0sK0JBQStCLEdBQUcsQ0FDN0MsV0FBbUIsRUFDbkIsV0FBbUIsRUFDWCxFQUFFLENBQUMsSUFBQSxpREFBcUMsRUFBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFIaEUsUUFBQSwrQkFBK0IsbUNBR2lDO0FBRXRFLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsaUJBQXlCLEVBQ3pCLFNBQWlCLEVBQ1QsRUFBRSxDQUNWLGdCQUFnQixvQkFBb0IsQ0FDbEMsaUJBQWlCLEVBQ2pCLG1CQUFtQixDQUNwQixJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO0FBUHpDLFFBQUEsc0JBQXNCLDBCQU9tQiJ9
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3Mta2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vYnVzaW5lc3Mta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUM7QUFFekMsa0dBQTJIO0FBRTNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDbEUsa0JBQWtCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRGxELFFBQUEsd0JBQXdCLDRCQUMwQjtBQUV4RCxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDdkUsd0JBQXdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRHhELFFBQUEsNkJBQTZCLGlDQUMyQjtBQUU5RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUQ3RCxRQUFBLHVCQUF1QiwyQkFDc0M7QUFFbkUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ2xFLGtCQUFrQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQURsRCxRQUFBLHdCQUF3Qiw0QkFDMEI7QUFFeEQsTUFB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
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decideCustomerVerificationResend = exports.verificationLookupEmails = exports.CUSTOMER_VERIFICATION_RESEND_INTERVAL_MS = void 0;
4
+ /** Shortest time between two confirmation mails for the same account. */
5
+ exports.CUSTOMER_VERIFICATION_RESEND_INTERVAL_MS = 60_000;
6
+ /**
7
+ * Medusa's emailpass provider stores the e-mail exactly as it was registered
8
+ * (no lowercasing) and logs in by exact match, so the account is looked up by
9
+ * the address as typed and by its lowercase form.
10
+ */
11
+ const verificationLookupEmails = (email) => {
12
+ const trimmed = email.trim();
13
+ return [...new Set([trimmed, trimmed.toLowerCase()])].filter(Boolean);
14
+ };
15
+ exports.verificationLookupEmails = verificationLookupEmails;
16
+ /**
17
+ * Whether a new confirmation mail may be requested: not for a confirmed
18
+ * address and not within a minute of the previous request (a missing row
19
+ * means none was requested yet).
20
+ */
21
+ const decideCustomerVerificationResend = (input) => {
22
+ const { now, verification } = input;
23
+ if (!verification) {
24
+ return "request";
25
+ }
26
+ if (verification.verified_at) {
27
+ return "already_verified";
28
+ }
29
+ const requestedAt = new Date(verification.requested_at).getTime();
30
+ if (Number.isFinite(requestedAt) &&
31
+ now.getTime() - requestedAt < exports.CUSTOMER_VERIFICATION_RESEND_INTERVAL_MS) {
32
+ return "throttled";
33
+ }
34
+ return "request";
35
+ };
36
+ exports.decideCustomerVerificationResend = decideCustomerVerificationResend;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdmVyaWZpY2F0aW9uLXJlc2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vY3VzdG9tZXItdmVyaWZpY2F0aW9uLXJlc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBeUU7QUFDNUQsUUFBQSx3Q0FBd0MsR0FBRyxNQUFNLENBQUM7QUFPL0Q7Ozs7R0FJRztBQUNJLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFhLEVBQVksRUFBRTtJQUNsRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFIVyxRQUFBLHdCQUF3Qiw0QkFHbkM7QUFFRjs7OztHQUlHO0FBQ0ksTUFBTSxnQ0FBZ0MsR0FBRyxDQUM5QyxLQU1FLEVBQ2tDLEVBQUU7SUFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEUsSUFDRSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM1QixHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxHQUFHLGdEQUF3QyxFQUN0RSxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQXhCVyxRQUFBLGdDQUFnQyxvQ0F3QjNDIn0=
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NativeInviteEventSchema = exports.NativePasswordResetEventSchema = exports.NativeShipmentCreatedEventSchema = exports.NativeReturnEventSchema = exports.NativeOrderEventSchema = void 0;
3
+ exports.NativeInviteEventSchema = exports.NativeVerificationRequestedEventSchema = exports.NativePasswordResetEventSchema = exports.NativeShipmentCreatedEventSchema = exports.NativeReturnEventSchema = exports.NativeOrderEventSchema = void 0;
4
4
  const zod_1 = require("@medusajs/framework/zod");
5
5
  const NonEmptyStringSchema = zod_1.z.string().trim().min(1);
6
6
  exports.NativeOrderEventSchema = zod_1.z
@@ -28,9 +28,25 @@ exports.NativePasswordResetEventSchema = zod_1.z
28
28
  metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
29
29
  })
30
30
  .strict();
31
+ /**
32
+ * Medusa's `auth.verification_requested`. Not strict: the workflow emits
33
+ * more fields (`code_provider`, `auth_identity_id`, ...) than the mail
34
+ * needs, and a field added by Medusa later must not silence the mail.
35
+ * `code` is absent when the identity is already verified; `expires_at` is a
36
+ * `Date` on the local Event Bus and an ISO string after Redis.
37
+ */
38
+ exports.NativeVerificationRequestedEventSchema = zod_1.z.object({
39
+ entity_id: NonEmptyStringSchema,
40
+ entity_type: NonEmptyStringSchema,
41
+ code_provider: NonEmptyStringSchema,
42
+ auth_identity_id: NonEmptyStringSchema,
43
+ code: NonEmptyStringSchema,
44
+ expires_at: zod_1.z.coerce.date(),
45
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).nullish(),
46
+ });
31
47
  exports.NativeInviteEventSchema = zod_1.z
32
48
  .object({
33
49
  id: NonEmptyStringSchema,
34
50
  })
35
51
  .strict();
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vZXZlbnQtc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBNEM7QUFFNUMsTUFBTSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXpDLFFBQUEsc0JBQXNCLEdBQUcsT0FBQztLQUNwQyxNQUFNLENBQUM7SUFDTixFQUFFLEVBQUUsb0JBQW9CO0NBQ3pCLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUVDLFFBQUEsdUJBQXVCLEdBQUcsT0FBQztLQUNyQyxNQUFNLENBQUM7SUFDTixRQUFRLEVBQUUsb0JBQW9CO0lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7Q0FDaEMsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRUMsUUFBQSxnQ0FBZ0MsR0FBRyxPQUFDO0tBQzlDLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsZUFBZSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDeEMsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRUMsUUFBQSw4QkFBOEIsR0FBRyxPQUFDO0tBQzVDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxLQUFLLEVBQUUsb0JBQW9CO0lBQzNCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDdkQsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRUMsUUFBQSx1QkFBdUIsR0FBRyxPQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxvQkFBb0I7Q0FDekIsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vZXZlbnQtc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBNEM7QUFFNUMsTUFBTSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXpDLFFBQUEsc0JBQXNCLEdBQUcsT0FBQztLQUNwQyxNQUFNLENBQUM7SUFDTixFQUFFLEVBQUUsb0JBQW9CO0NBQ3pCLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUVDLFFBQUEsdUJBQXVCLEdBQUcsT0FBQztLQUNyQyxNQUFNLENBQUM7SUFDTixRQUFRLEVBQUUsb0JBQW9CO0lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7Q0FDaEMsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRUMsUUFBQSxnQ0FBZ0MsR0FBRyxPQUFDO0tBQzlDLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxvQkFBb0I7SUFDeEIsZUFBZSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDeEMsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRUMsUUFBQSw4QkFBOEIsR0FBRyxPQUFDO0tBQzVDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxLQUFLLEVBQUUsb0JBQW9CO0lBQzNCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDdkQsQ0FBQztLQUNELE1BQU0sRUFBRSxDQUFDO0FBRVo7Ozs7OztHQU1HO0FBQ1UsUUFBQSxzQ0FBc0MsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdELFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxhQUFhLEVBQUUsb0JBQW9CO0lBQ25DLGdCQUFnQixFQUFFLG9CQUFvQjtJQUN0QyxJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtJQUMzQixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQ3RELENBQUMsQ0FBQztBQUVVLFFBQUEsdUJBQXVCLEdBQUcsT0FBQztLQUNyQyxNQUFNLENBQUM7SUFDTixFQUFFLEVBQUUsb0JBQW9CO0NBQ3pCLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQyJ9
@@ -16,9 +16,16 @@ exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
16
16
  {
17
17
  key: "account_mails",
18
18
  label: "Konto-Mails",
19
- description: "Passwort-Zurücksetzen für Kunden und Einladungen neuer Admin-Benutzer. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
19
+ description: "Passwort-Zurücksetzen für Kunden, Einladungen neuer Admin-Benutzer und die Bestätigungsmail der Kontobestätigung. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
20
20
  default_enabled: true,
21
21
  },
22
+ {
23
+ key: "customer_verification",
24
+ label: "Kontobestätigung per E-Mail",
25
+ description: "Neue und bestehende Kundenkonten müssen ihre E-Mail-Adresse über einen Link bestätigen, bevor die erste Anmeldung gelingt; bestehende Konten bekommen die Mail bei der nächsten Anmeldung. Voraussetzung: Konto-Mails sind eingeschaltet, sonst kommt keine Bestätigungsmail an. Eine Änderung wirkt innerhalb von etwa 30 Sekunden. Aus: Kunden melden sich ohne Bestätigung an.",
26
+ default_enabled: false,
27
+ parent_key: "account_mails",
28
+ },
22
29
  {
23
30
  key: "affiliate_reminders",
24
31
  label: "Affiliate-Erinnerungen",
@@ -36,4 +43,4 @@ exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
36
43
  ],
37
44
  admin_page: "/settings/hartl-services/email",
38
45
  });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULDZhQUE2YTtJQUMvYSxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxvWkFBb1o7WUFDdFosZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFDVCwySEFBMkg7WUFDN0gsZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLHdCQUF3QjtZQUMvQixXQUFXLEVBQ1Qsc0hBQXNIO1lBQ3hILGVBQWUsRUFBRSxJQUFJO1NBQ3RCO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixXQUFXLEVBQ1QsK0pBQStKO1lBQ2pLLElBQUksRUFBRSxPQUFPO1NBQ2Q7S0FDRjtJQUNELFVBQVUsRUFBRSxnQ0FBZ0M7Q0FDN0MsQ0FBQyxDQUFDIn0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULDZhQUE2YTtJQUMvYSxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxvWkFBb1o7WUFDdFosZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFDVCxzS0FBc0s7WUFDeEssZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSx1QkFBdUI7WUFDNUIsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxXQUFXLEVBQ1QsbVhBQW1YO1lBQ3JYLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFVBQVUsRUFBRSxlQUFlO1NBQzVCO1FBQ0Q7WUFDRSxHQUFHLEVBQUUscUJBQXFCO1lBQzFCLEtBQUssRUFBRSx3QkFBd0I7WUFDL0IsV0FBVyxFQUNULHNIQUFzSDtZQUN4SCxlQUFlLEVBQUUsSUFBSTtTQUN0QjtLQUNGO0lBQ0QsUUFBUSxFQUFFO1FBQ1I7WUFDRSxHQUFHLEVBQUUsTUFBTTtZQUNYLEtBQUssRUFBRSxNQUFNO1lBQ2IsV0FBVyxFQUNULCtKQUErSjtZQUNqSyxJQUFJLEVBQUUsT0FBTztTQUNkO0tBQ0Y7SUFDRCxVQUFVLEVBQUUsZ0NBQWdDO0NBQzdDLENBQUMsQ0FBQyJ9
@@ -414,6 +414,9 @@ const REFUND_INTRO = "Wir haben dir eine Erstattung veranlasst.";
414
414
  const REFUND_DURATION = "Je nach Zahlungsart kann es einige Tage dauern, bis der Betrag auf deinem Konto sichtbar ist.";
415
415
  const PASSWORD_RESET_BUTTON = "Neues Passwort festlegen";
416
416
  const PASSWORD_RESET_IGNORE = "Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail ignorieren. Dein bisheriges Passwort bleibt dann unverändert.";
417
+ const VERIFICATION_BUTTON = "E-Mail-Adresse bestätigen";
418
+ const VERIFICATION_VALIDITY = "Der Link ist nur begrenzte Zeit gültig. Ist er abgelaufen, bekommst du beim nächsten Anmelden einen neuen Link oder kannst auf der Seite „Bestätigungsmail erneut senden“ wählen.";
419
+ const VERIFICATION_IGNORE = "Falls du dich nicht bei uns registriert hast, kannst du diese E-Mail ignorieren.";
417
420
  /** The link as copyable text below a button, for clients that block it. */
418
421
  const linkFallbackHtml = (url) => `<p style="margin: 0 0 16px; font-family: ${FONT}; font-size: 13px; line-height: 20px; color: ${COLOR.muted};">Falls der Button nicht funktioniert, kopiere diesen Link in deinen Browser:<br /><a href="${escapeHtml(url)}" style="color: ${COLOR.muted}; word-break: break-all;">${escapeHtml(url)}</a></p>`;
419
422
  const CONSIGNMENT_BILLING = "Aus deinem gezählten Bestand ergeben sich die verkauften Artikel, die wir dir anschließend in Rechnung stellen.";
@@ -666,6 +669,22 @@ const createDefaultEmailRenderers = ({ adminOrderUrl, affiliatePortalUrl, displa
666
669
  ].join("\n"),
667
670
  };
668
671
  },
672
+ "auth.verification": ({ verify_url }) => {
673
+ const intro = `Schön, dass du dich bei ${displayName} registriert hast. Bitte bestätige deine E-Mail-Adresse, damit du dich anmelden kannst.`;
674
+ return {
675
+ bodyHtml: `${paragraph(escapeHtml(intro))}${button(verify_url, VERIFICATION_BUTTON)}${linkFallbackHtml(verify_url)}${paragraph(escapeHtml(VERIFICATION_VALIDITY))}${paragraph(escapeHtml(VERIFICATION_IGNORE))}`,
676
+ subject: "Bestätige deine E-Mail-Adresse",
677
+ text: [
678
+ intro,
679
+ "",
680
+ `${VERIFICATION_BUTTON}: ${verify_url}`,
681
+ "",
682
+ VERIFICATION_VALIDITY,
683
+ "",
684
+ VERIFICATION_IGNORE,
685
+ ].join("\n"),
686
+ };
687
+ },
669
688
  "affiliate.consignment_report_due": ({ affiliate_display_name, due_date, period_start, }) => {
670
689
  const month = calendarMonth(period_start);
671
690
  const greeting = `Hallo ${affiliate_display_name},`;
@@ -716,4 +735,4 @@ const createDefaultEmailRenderers = ({ adminOrderUrl, affiliatePortalUrl, displa
716
735
  };
717
736
  };
718
737
  exports.createDefaultEmailRenderers = createDefaultEmailRenderers;
719
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10ZW1wbGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL2RlZmF1bHQtdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUEyRTtBQWMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQzNDLEtBQUs7S0FDRixVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztLQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztLQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztLQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRS9CLDhFQUE4RTtBQUM5RSxNQUFNLElBQUksR0FDUixxRkFBcUYsQ0FBQztBQUN4RixNQUFNLEtBQUssR0FBRztJQUNaLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFNBQVM7Q0FDUixDQUFDO0FBRVgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUN6Qyw0Q0FBNEMsSUFBSSxnREFBZ0QsS0FBSyxDQUFDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQztBQUU3SCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQy9DLGdEQUFnRCxJQUFJLG9IQUFvSCxLQUFLLENBQUMsS0FBSyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBRXBOLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBOEMsRUFBVSxFQUFFLENBQ3pFLDZIQUE2SCxLQUFLLENBQUMsVUFBVSwwQkFBMEIsSUFB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
738
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10ZW1wbGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL2RlZmF1bHQtdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUEyRTtBQWMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQzNDLEtBQUs7S0FDRixVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztLQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztLQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztLQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRS9CLDhFQUE4RTtBQUM5RSxNQUFNLElBQUksR0FDUixxRkFBcUYsQ0FBQztBQUN4RixNQUFNLEtBQUssR0FBRztJQUNaLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFNBQVM7Q0FDUixDQUFDO0FBRVgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRSxDQUN6Qyw0Q0FBNEMsSUFBSSxnREFBZ0QsS0FBSyxDQUFDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQztBQUU3SCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQy9DLGdEQUFnRCxJQUFJLG9IQUFvSCxLQUFLLENBQUMsS0FBSyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBRXBOLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBOEMsRUFBVSxFQUFFLENBQ3pFLDZIQUE2SCxLQUFLLENBQUMsVUFBVSwwQkFBMEIsSUFB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