@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.
- package/.medusa/server/src/admin/index.js +3 -1
- package/.medusa/server/src/admin/index.mjs +3 -1
- package/.medusa/server/src/api/customer-verification-request-throttle.js +50 -0
- package/.medusa/server/src/api/middlewares.js +31 -1
- package/.medusa/server/src/api/store/customer-verification/resend/route.js +17 -0
- package/.medusa/server/src/email/application/handle-customer-verification-event.js +341 -0
- package/.medusa/server/src/email/application/resend-customer-verification.js +65 -0
- package/.medusa/server/src/email/application/start-customer-verification-snapshot.js +21 -0
- package/.medusa/server/src/email/application/throttle-verification-request.js +49 -0
- package/.medusa/server/src/email/customer-verification-snapshot.js +144 -0
- package/.medusa/server/src/email/domain/business-keys.js +12 -2
- package/.medusa/server/src/email/domain/customer-verification-resend.js +37 -0
- package/.medusa/server/src/email/domain/event-schemas.js +18 -2
- package/.medusa/server/src/email/plugin-features.js +9 -2
- package/.medusa/server/src/email/rendering/default-templates.js +20 -1
- package/.medusa/server/src/email/rendering/resolve-shop-configuration.js +5 -1
- package/.medusa/server/src/email/types/email-kinds.js +14 -2
- package/.medusa/server/src/email/types/template-data.js +9 -1
- package/.medusa/server/src/modules/email/migrations/Migration20261001090000.js +16 -0
- package/.medusa/server/src/modules/email/service.js +30 -8
- package/.medusa/server/src/shop-config/build-food-shop-config.js +16 -1
- package/.medusa/server/src/subscribers/customer-verification.js +23 -0
- package/.medusa/server/src/workflows/email/dispatch-email-message.js +4 -2
- package/README.md +140 -15
- package/dist/email/customer-verification-snapshot.d.ts +53 -0
- package/dist/email/customer-verification-snapshot.js +143 -0
- package/dist/email/types/email-kinds.d.ts +9 -1
- package/dist/email/types/email-kinds.js +13 -1
- package/dist/email/types/shop-configuration.d.ts +8 -0
- package/dist/email/types/template-data.d.ts +9 -0
- package/dist/email/types/template-data.js +8 -0
- package/dist/shop-config/build-food-shop-config.js +15 -0
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdmVyaWZpY2F0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2N1c3RvbWVyLXZlcmlmaWNhdGlvbi1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7QUFpQnZELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQzFCLDREQUE0RCxDQUM3RCxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsR0FBa0IsRUFBRTtJQUNoQyxNQUFNLE1BQU0sR0FBRyxVQUFzRCxDQUFDO0lBQ3RFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQXNCLEVBQUUsS0FBYyxFQUFRLEVBQUU7SUFDbEUsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNaLDREQUNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FDM0IsTUFBTSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwrREFBK0Q7SUFDakUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDZFQUE2RTtBQUN0RSxNQUFNLG1DQUFtQyxHQUFHLEdBQWtCLEVBQUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkIsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLDhFQUE4RTtJQUM5RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25ELElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO2dCQUFTLENBQUM7WUFDVCxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUF0QlcsUUFBQSxtQ0FBbUMsdUNBc0I5QztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBc0IsRUFBUSxFQUFFO0lBQ2pELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUNuRSxNQUFNLGdDQUFnQyxHQUFHLEdBQVMsRUFBRTtJQUN6RCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFGVyxRQUFBLGdDQUFnQyxvQ0FFM0M7QUFFRjs7OztHQUlHO0FBQ0ksTUFBTSxpQ0FBaUMsR0FBRyxDQUMvQyxLQUdFLEVBQ2EsRUFBRTtJQUNqQixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUN4QixPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDMUIsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDL0IsS0FBSyxJQUFBLDJDQUFtQyxHQUFFLENBQUM7SUFDN0MsQ0FBQyxFQUFFLHdDQUFnQyxDQUFDLENBQUM7SUFDckMsaUVBQWlFO0lBQ2pFLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsT0FBTyxJQUFBLDJDQUFtQyxHQUFFLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsaUNBQWlDLHFDQWdCNUM7QUFFRixxRkFBcUY7QUFDOUUsTUFBTSw2QkFBNkIsR0FBRyxHQUFZLEVBQUU7SUFDekQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFDRSxPQUFPLENBQUMsSUFBSTtRQUNaLENBQUMsT0FBTyxDQUFDLFVBQVU7UUFDbkIsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDM0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksd0NBQWdDLENBQUMsRUFDdkUsQ0FBQztRQUNELEtBQUssSUFBQSwyQ0FBbUMsR0FBRSxDQUFDO0lBQzdDLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFDekIsQ0FBQyxDQUFDO0FBWFcsUUFBQSw2QkFBNkIsaUNBV3hDO0FBRUY7Ozs7R0FJRztBQUNJLE1BQU0sMEJBQTBCLEdBQUcsR0FBZ0MsRUFBRSxDQUMxRSxJQUFBLHFDQUE2QixHQUFFO0lBQzdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDeEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUhJLFFBQUEsMEJBQTBCLDhCQUc5QjtBQUVUOzs7R0FHRztBQUNJLE1BQU0sc0NBQXNDLEdBQUcsQ0FDcEQsT0FBdUIsRUFDakIsRUFBRTtJQUNSLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ3hCLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUMzQixPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMxQixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNwQixPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNwQixPQUFPO0lBQ1QsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQWZXLFFBQUEsc0NBQXNDLDBDQWVqRCJ9
|
|
@@ -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,
|
|
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,
|
|
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
|
|
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,
|
|
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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
|