@teleporthq/teleport-plugin-next-workflows 0.45.2 → 0.45.5
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/__tests__/analytics-outcome-visit-ids.test.ts +583 -0
- package/__tests__/analytics-track-outcome.test.ts +71 -3
- package/__tests__/auth-password-security.test.ts +101 -0
- package/__tests__/automations-bus.test.ts +439 -2
- package/__tests__/security-lists-parity.test.ts +2 -2
- package/__tests__/security-runtime.test.ts +37 -20
- package/dist/cjs/api-route-generator.d.ts +2 -0
- package/dist/cjs/api-route-generator.d.ts.map +1 -1
- package/dist/cjs/api-route-generator.js +43 -1
- package/dist/cjs/api-route-generator.js.map +1 -1
- package/dist/cjs/auth-generator.d.ts.map +1 -1
- package/dist/cjs/auth-generator.js +48 -19
- package/dist/cjs/auth-generator.js.map +1 -1
- package/dist/cjs/automations/dispatcher-source.d.ts.map +1 -1
- package/dist/cjs/automations/dispatcher-source.js +13 -5
- package/dist/cjs/automations/dispatcher-source.js.map +1 -1
- package/dist/cjs/automations/event-bus-source.d.ts.map +1 -1
- package/dist/cjs/automations/event-bus-source.js +37 -23
- package/dist/cjs/automations/event-bus-source.js.map +1 -1
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +4 -0
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/nodes/account/account-request-password-reset.d.ts.map +1 -1
- package/dist/cjs/nodes/account/account-request-password-reset.js +3 -2
- package/dist/cjs/nodes/account/account-request-password-reset.js.map +1 -1
- package/dist/cjs/nodes/analytics/analytics-track-outcome.d.ts.map +1 -1
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js +17 -4
- package/dist/cjs/nodes/analytics/analytics-track-outcome.js.map +1 -1
- package/dist/cjs/password-reset-route-generator.d.ts +2 -0
- package/dist/cjs/password-reset-route-generator.d.ts.map +1 -1
- package/dist/cjs/password-reset-route-generator.js +17 -10
- package/dist/cjs/password-reset-route-generator.js.map +1 -1
- package/dist/cjs/security-runtime/security-runtime-code.d.ts +3 -2
- package/dist/cjs/security-runtime/security-runtime-code.d.ts.map +1 -1
- package/dist/cjs/security-runtime/security-runtime-code.js +17 -13
- package/dist/cjs/security-runtime/security-runtime-code.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/api-route-generator.d.ts +2 -0
- package/dist/esm/api-route-generator.d.ts.map +1 -1
- package/dist/esm/api-route-generator.js +44 -2
- package/dist/esm/api-route-generator.js.map +1 -1
- package/dist/esm/auth-generator.d.ts.map +1 -1
- package/dist/esm/auth-generator.js +48 -19
- package/dist/esm/auth-generator.js.map +1 -1
- package/dist/esm/automations/dispatcher-source.d.ts.map +1 -1
- package/dist/esm/automations/dispatcher-source.js +13 -5
- package/dist/esm/automations/dispatcher-source.js.map +1 -1
- package/dist/esm/automations/event-bus-source.d.ts.map +1 -1
- package/dist/esm/automations/event-bus-source.js +37 -23
- package/dist/esm/automations/event-bus-source.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +4 -0
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/nodes/account/account-request-password-reset.d.ts.map +1 -1
- package/dist/esm/nodes/account/account-request-password-reset.js +3 -2
- package/dist/esm/nodes/account/account-request-password-reset.js.map +1 -1
- package/dist/esm/nodes/analytics/analytics-track-outcome.d.ts.map +1 -1
- package/dist/esm/nodes/analytics/analytics-track-outcome.js +17 -4
- package/dist/esm/nodes/analytics/analytics-track-outcome.js.map +1 -1
- package/dist/esm/password-reset-route-generator.d.ts +2 -0
- package/dist/esm/password-reset-route-generator.d.ts.map +1 -1
- package/dist/esm/password-reset-route-generator.js +16 -9
- package/dist/esm/password-reset-route-generator.js.map +1 -1
- package/dist/esm/security-runtime/security-runtime-code.d.ts +3 -2
- package/dist/esm/security-runtime/security-runtime-code.d.ts.map +1 -1
- package/dist/esm/security-runtime/security-runtime-code.js +17 -13
- package/dist/esm/security-runtime/security-runtime-code.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/api-route-generator.ts +52 -2
- package/src/auth-generator.ts +48 -19
- package/src/automations/dispatcher-source.ts +13 -5
- package/src/automations/event-bus-source.ts +37 -23
- package/src/executor-generator.ts +4 -0
- package/src/nodes/account/account-request-password-reset.ts +3 -2
- package/src/nodes/analytics/analytics-track-outcome.ts +17 -4
- package/src/password-reset-route-generator.ts +18 -9
- package/src/security-runtime/security-runtime-code.ts +17 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher-source.js","sourceRoot":"","sources":["../../../src/automations/dispatcher-source.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dispatcher-source.js","sourceRoot":"","sources":["../../../src/automations/dispatcher-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus-source.d.ts","sourceRoot":"","sources":["../../../src/automations/event-bus-source.ts"],"names":[],"mappings":"AAcA,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,iCAAiC,CAAA;AAEnE,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,QAA4I,CAAA;AAEzK;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,QAAO,
|
|
1
|
+
{"version":3,"file":"event-bus-source.d.ts","sourceRoot":"","sources":["../../../src/automations/event-bus-source.ts"],"names":[],"mappings":"AAcA,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,iCAAiC,CAAA;AAEnE,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,QAA4I,CAAA;AAEzK;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,QAAO,MA4Q9C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,QAAO,MAoBlD,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,QAAO,MA6FjD,CAAA"}
|
|
@@ -83,10 +83,15 @@ async function saveWait(wait) {
|
|
|
83
83
|
|
|
84
84
|
// The signed requests the dispatch route has taken, each kept until its
|
|
85
85
|
// signature can no longer verify: the same request again is refused. The
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
//
|
|
86
|
+
// editor makes the table with the other automation tables, and a site's
|
|
87
|
+
// database role may read and write it without being allowed to create one
|
|
88
|
+
// (CREATE ... IF NOT EXISTS asks for that permission even when the table is
|
|
89
|
+
// there), so a create is attempted only for a table that really is missing,
|
|
90
|
+
// two instances taking turns under the lock. The rows that are over are
|
|
91
|
+
// deleted at most once per instance every SIGNED_REQUESTS_CLEANUP_MS, a
|
|
92
|
+
// bounded batch at a time.
|
|
89
93
|
var SIGNED_REQUESTS_TABLE = '${SIGNED_REQUESTS_TABLE}';
|
|
94
|
+
var UNDEFINED_TABLE_CODE = '42P01';
|
|
90
95
|
var LOCK_SIGNED_REQUESTS_SQL = 'SELECT pg_advisory_xact_lock(hashtext($1))';
|
|
91
96
|
var CREATE_SIGNED_REQUESTS_SQL = 'CREATE TABLE IF NOT EXISTS ' + SIGNED_REQUESTS_TABLE +
|
|
92
97
|
' (request_key TEXT PRIMARY KEY, expires_at BIGINT NOT NULL)';
|
|
@@ -97,34 +102,43 @@ var FORGET_SIGNED_REQUESTS_SQL = 'DELETE FROM ' + SIGNED_REQUESTS_TABLE + ' WHER
|
|
|
97
102
|
var TAKE_SIGNED_REQUEST_SQL = 'INSERT INTO ' + SIGNED_REQUESTS_TABLE + ' (request_key, expires_at) VALUES ($1, $2) ' +
|
|
98
103
|
'ON CONFLICT (request_key) DO NOTHING RETURNING request_key';
|
|
99
104
|
var SIGNED_REQUESTS_CLEANUP_MS = 600000;
|
|
100
|
-
var __signedRequestsReady = false;
|
|
101
105
|
var __signedRequestsCleanedAt = 0;
|
|
102
106
|
|
|
107
|
+
async function createSignedRequestsTable(client) {
|
|
108
|
+
await client.query('BEGIN');
|
|
109
|
+
try {
|
|
110
|
+
await client.query(LOCK_SIGNED_REQUESTS_SQL, [SIGNED_REQUESTS_TABLE]);
|
|
111
|
+
await client.query(CREATE_SIGNED_REQUESTS_SQL);
|
|
112
|
+
await client.query(INDEX_SIGNED_REQUESTS_SQL);
|
|
113
|
+
await client.query('COMMIT');
|
|
114
|
+
} catch (error) {
|
|
115
|
+
try { await client.query('ROLLBACK'); } catch (_e) {}
|
|
116
|
+
throw new Error('[automations] the table ' + SIGNED_REQUESTS_TABLE + ' is missing and could not be created: ' + errorMessage(error));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async function recordSignedRequest(client, key, expiresAt) {
|
|
121
|
+
var nowMs = Date.now();
|
|
122
|
+
if (nowMs - __signedRequestsCleanedAt >= SIGNED_REQUESTS_CLEANUP_MS) {
|
|
123
|
+
__signedRequestsCleanedAt = nowMs;
|
|
124
|
+
await client.query(FORGET_SIGNED_REQUESTS_SQL, [Math.floor(nowMs / 1000)]);
|
|
125
|
+
}
|
|
126
|
+
var taken = await client.query(TAKE_SIGNED_REQUEST_SQL, [key, expiresAt]);
|
|
127
|
+
return !!(taken && taken.rows && taken.rows[0]);
|
|
128
|
+
}
|
|
129
|
+
|
|
103
130
|
// true the first time a signed request (its key) is taken, false every time
|
|
104
131
|
// after while it is kept (until expiresAt, unix seconds). Throws when the
|
|
105
132
|
// database cannot say: the route then refuses.
|
|
106
133
|
async function takeSignedRequest(key, expiresAt) {
|
|
107
134
|
return withClient(async function (client) {
|
|
108
|
-
|
|
109
|
-
await client
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
await client.query('COMMIT');
|
|
115
|
-
} catch (error) {
|
|
116
|
-
try { await client.query('ROLLBACK'); } catch (_e) {}
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
__signedRequestsReady = true;
|
|
120
|
-
}
|
|
121
|
-
var nowMs = Date.now();
|
|
122
|
-
if (nowMs - __signedRequestsCleanedAt >= SIGNED_REQUESTS_CLEANUP_MS) {
|
|
123
|
-
__signedRequestsCleanedAt = nowMs;
|
|
124
|
-
await client.query(FORGET_SIGNED_REQUESTS_SQL, [Math.floor(nowMs / 1000)]);
|
|
135
|
+
try {
|
|
136
|
+
return await recordSignedRequest(client, key, expiresAt);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
if (!error || error.code !== UNDEFINED_TABLE_CODE) throw error;
|
|
139
|
+
await createSignedRequestsTable(client);
|
|
140
|
+
return recordSignedRequest(client, key, expiresAt);
|
|
125
141
|
}
|
|
126
|
-
var taken = await client.query(TAKE_SIGNED_REQUEST_SQL, [key, expiresAt]);
|
|
127
|
-
return !!(taken && taken.rows && taken.rows[0]);
|
|
128
142
|
});
|
|
129
143
|
}
|
|
130
144
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus-source.js","sourceRoot":"","sources":["../../../src/automations/event-bus-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAElE;;;;;GAKG;AAEH,MAAM,aAAa,GACjB,sFAAsF,CAAA;AAExF,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAA;AAEnE,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,aAAa,4FAA4F,CAAA;AAEzK;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE,CAAC;;;;EAIvD,wBAAwB,EAAE
|
|
1
|
+
{"version":3,"file":"event-bus-source.js","sourceRoot":"","sources":["../../../src/automations/event-bus-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAElE;;;;;GAKG;AAEH,MAAM,aAAa,GACjB,sFAAsF,CAAA;AAExF,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAA;AAEnE,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,aAAa,4FAA4F,CAAA;AAEzK;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE,CAAC;;;;EAIvD,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAgEG,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+HlD,2BAA2B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyE9B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;CAoB5D,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;uBAWrC,wBAAwB;0BACrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFzC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAA;AAYvB,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAID,eAAO,MAAM,8BAA8B,aAAa,yBAAyB,KAAQ,
|
|
1
|
+
{"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGlB,MAAM,gBAAgB,CAAA;AAYvB,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAID,eAAO,MAAM,8BAA8B,aAAa,yBAAyB,KAAQ,MAiyDxF,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MA0pB5C,CAAA"}
|
|
@@ -988,6 +988,9 @@ async function executeWorkflow(workflowConfig, triggerContext, nodeHandlers, opt
|
|
|
988
988
|
if (triggerContext && triggerContext.__dynamicRouteParam) {
|
|
989
989
|
context.__dynamicRouteParam = triggerContext.__dynamicRouteParam;
|
|
990
990
|
}
|
|
991
|
+
if (triggerContext && triggerContext.__tpa) {
|
|
992
|
+
context.__tpa = triggerContext.__tpa;
|
|
993
|
+
}
|
|
991
994
|
if (triggerContext && triggerContext.triggerElement) {
|
|
992
995
|
context.triggerElement = triggerContext.triggerElement;
|
|
993
996
|
}
|
|
@@ -2130,6 +2133,7 @@ function buildContext(workflowConfig, triggerContext) {
|
|
|
2130
2133
|
if (triggerContext.__stateValues) context.__stateValues = triggerContext.__stateValues;
|
|
2131
2134
|
if (triggerContext.__routeParams) context.__routeParams = triggerContext.__routeParams;
|
|
2132
2135
|
if (triggerContext.__dynamicRouteParam) context.__dynamicRouteParam = triggerContext.__dynamicRouteParam;
|
|
2136
|
+
if (triggerContext.__tpa) context.__tpa = triggerContext.__tpa;
|
|
2133
2137
|
if (triggerContext.triggerElement) context.triggerElement = triggerContext.triggerElement;
|
|
2134
2138
|
}
|
|
2135
2139
|
// See executeWorkflow: the page's language travels with the run.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAA;AAC1F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,wCAAwC,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAYpE,MAAM,gBAAgB,GAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;AAE9E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAqC,EAAE,EAAU,EAAE;IAChG,OAAO;;;;;;;;;EASP,8BAA8B,CAAC,OAAO,CAAC,YAAY,IAAI,gBAAgB,CAAC;EACxE,iCAAiC,EAAE;EACnC,+BAA+B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0RxB,gBAAgB,CAAC,OAAO,CAAC;;;;;;WAMzB,iBAAiB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkInC,yBAAyB;;;;;;;;;;;;;0BAaD,mBAAmB,mDAAmD,mBAAmB;UACzG,mBAAmB,iCAAiC,mBAAmB
|
|
1
|
+
{"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAA;AAC1F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,wCAAwC,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAYpE,MAAM,gBAAgB,GAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;AAE9E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAqC,EAAE,EAAU,EAAE;IAChG,OAAO;;;;;;;;;EASP,8BAA8B,CAAC,OAAO,CAAC,YAAY,IAAI,gBAAgB,CAAC;EACxE,iCAAiC,EAAE;EACnC,+BAA+B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0RxB,gBAAgB,CAAC,OAAO,CAAC;;;;;;WAMzB,iBAAiB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkInC,yBAAyB;;;;;;;;;;;;;0BAaD,mBAAmB,mDAAmD,mBAAmB;UACzG,mBAAmB,iCAAiC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4uC/E,6BAA6B,EAAE;EAC/B,6BAA6B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmE/B,wCAAwC,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDpD,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwpBR,CAAA;AACD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-request-password-reset.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-request-password-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"account-request-password-reset.d.ts","sourceRoot":"","sources":["../../../../src/nodes/account/account-request-password-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AAyChE,eAAO,MAAM,2BAA2B,EAAE,oBAMzC,CAAA"}
|
|
@@ -4,8 +4,9 @@ import { handlerToString } from '../types';
|
|
|
4
4
|
// server: whether the address has an account, the link's token (minted there,
|
|
5
5
|
// stored hashed), the page it opens and the email itself (provider, sender and
|
|
6
6
|
// template baked from this node's config at generation). The route answers the
|
|
7
|
-
// same whether the address has an account or not, so this node
|
|
8
|
-
//
|
|
7
|
+
// same whether the address has an account or not, so this node reports success
|
|
8
|
+
// for a well-formed request unless the site could not keep a link, for any
|
|
9
|
+
// address.
|
|
9
10
|
async function account_request_password_reset(config, context) {
|
|
10
11
|
const email = config && typeof config.email === 'string' ? config.email.trim() : '';
|
|
11
12
|
if (!email) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-request-password-reset.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-request-password-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;AAEhE,4EAA4E;AAC5E,wEAAwE;AACxE,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"account-request-password-reset.js","sourceRoot":"","sources":["../../../../src/nodes/account/account-request-password-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;AAEhE,4EAA4E;AAC5E,wEAAwE;AACxE,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,WAAW;AACX,KAAK,UAAU,8BAA8B,CAAC,MAAW,EAAE,OAAgC;IACzF,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;KACrC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,IAAK,OAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAC7D,8DAA8D;IAC9D,MAAM,cAAc,GAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA;IAClE,MAAM,SAAS,GAAG,OAAO,IAAK,OAAe,CAAC,QAAQ,CAAA;IACtD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,EAAE;QAC9C,cAAc,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAA;KAChD;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,2BAA2B,EAAE;QAClE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAChC,CAAC,CAAA;IAEF,IAAI,IAAI,GAAQ,EAAE,CAAA;IAClB,IAAI;QACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;KAC7B;IAAC,OAAO,EAAE,EAAE,GAAE;IAEf,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,qDAAqD,CAAC,CAAA;KAC/F;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAyB;IAC/D,QAAQ,EAAE,gCAAgC;IAC1C,YAAY,EAAE,QAAQ;IACtB,eAAe;QACb,OAAO,eAAe,CAAC,8BAA8B,CAAC,CAAA;IACxD,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-track-outcome.d.ts","sourceRoot":"","sources":["../../../../src/nodes/analytics/analytics-track-outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics-track-outcome.d.ts","sourceRoot":"","sources":["../../../../src/nodes/analytics/analytics-track-outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAkH/C,eAAO,MAAM,qBAAqB,EAAE,oBASnC,CAAA"}
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
* carries the ids the trigger stamped on the context (`__tpa`, set by every
|
|
13
13
|
* generated trigger) plus whatever first-touch snapshot the caller binds in
|
|
14
14
|
* `attribution` (the checkout stamps `utm_*`, `referrer_host`, `landing_path`).
|
|
15
|
+
* A snapshot naming a `session_id` is the visit that placed an order, read back
|
|
16
|
+
* by a run outside that visit (a payment webhook, a cron, an admin page): its
|
|
17
|
+
* `session_id`, `visitor_id` and `exp` stand in for the trigger's ids. Otherwise
|
|
18
|
+
* the visitor id is the tracker's alone: a browser may still hold a persistent
|
|
19
|
+
* id from before its consent was withdrawn.
|
|
15
20
|
*
|
|
16
21
|
* Never throws: an outcome that cannot be reported answers `{ sent: false }`
|
|
17
22
|
* and the workflow continues — analytics must never cost a sale.
|
|
@@ -56,22 +61,30 @@ const SERVER_BODY = `async function analytics_track_outcome(config, context) {
|
|
|
56
61
|
if (baseUrl.indexOf('http') !== 0 || !publicKey || !serverKey) {
|
|
57
62
|
return { sent: false, reason: 'not-configured' };
|
|
58
63
|
}
|
|
64
|
+
// The service dedupes on this id and drops an outcome without one.
|
|
65
|
+
if (config.outcomeId == null || config.outcomeId === '') {
|
|
66
|
+
return { sent: false, reason: 'no-outcome-id' };
|
|
67
|
+
}
|
|
59
68
|
var ids = context && context.__tpa && typeof context.__tpa === 'object' ? context.__tpa : {};
|
|
60
69
|
var attribution = config.attribution && typeof config.attribution === 'object' ? config.attribution : {};
|
|
70
|
+
var visit = attribution.session_id
|
|
71
|
+
? { sessionId: attribution.session_id, visitorId: attribution.visitor_id, exp: attribution.exp }
|
|
72
|
+
: ids;
|
|
61
73
|
var outcome = {
|
|
62
74
|
name: name,
|
|
63
75
|
value: config.value == null || config.value === '' ? null : Number(config.value),
|
|
64
76
|
currency: config.currency == null ? null : String(config.currency),
|
|
65
77
|
outcomeId: config.outcomeId == null ? null : String(config.outcomeId),
|
|
66
78
|
recordId: config.recordId == null ? null : String(config.recordId),
|
|
67
|
-
sessionId:
|
|
68
|
-
visitorId:
|
|
69
|
-
path:
|
|
70
|
-
exp:
|
|
79
|
+
sessionId: visit.sessionId || null,
|
|
80
|
+
visitorId: visit.visitorId || null,
|
|
81
|
+
path: visit.path || null,
|
|
82
|
+
exp: visit.exp || null,
|
|
71
83
|
attribution: {
|
|
72
84
|
utmSource: attribution.utm_source || attribution.utmSource || null,
|
|
73
85
|
utmMedium: attribution.utm_medium || attribution.utmMedium || null,
|
|
74
86
|
utmCampaign: attribution.utm_campaign || attribution.utmCampaign || null,
|
|
87
|
+
utmContent: attribution.utm_content || attribution.utmContent || null,
|
|
75
88
|
referrerHost: attribution.referrer_host || attribution.referrerHost || null,
|
|
76
89
|
landingPath: attribution.landing_path || attribution.landingPath || null
|
|
77
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-track-outcome.js","sourceRoot":"","sources":["../../../../src/nodes/analytics/analytics-track-outcome.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"analytics-track-outcome.js","sourceRoot":"","sources":["../../../../src/nodes/analytics/analytics-track-outcome.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;AAEzD,MAAM,WAAW,GAAG;;;;;QAKZ,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;EAoB1C,CAAA;AAEF,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DlB,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD,QAAQ,EAAE,yBAAyB;IACnC,YAAY,EAAE,WAAW;IACzB,eAAe;QACb,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,qBAAqB;QACnB,OAAO,WAAW,CAAA;IACpB,CAAC;CACF,CAAA"}
|
|
@@ -30,6 +30,8 @@ export declare const RESET_PASSWORD_VISITOR_LIMIT = 20;
|
|
|
30
30
|
export declare const DEFAULT_RESET_PAGE_PATH = "/reset-password";
|
|
31
31
|
/** The same answer for every well-formed request, whatever the address. */
|
|
32
32
|
export declare const FORGOT_PASSWORD_ANSWER = "If an account exists for that email, we sent it a link to reset the password.";
|
|
33
|
+
/** What the route answers, to every address, when a link could not be kept. */
|
|
34
|
+
export declare const FORGOT_PASSWORD_NOT_SENT = "We could not send the reset link. Please try again in a moment.";
|
|
33
35
|
/**
|
|
34
36
|
* The sessionStorage key the reset page reads the link's token from (mirrored
|
|
35
37
|
* in teleport-gui `RESET_TOKEN_STORAGE_KEY`). The published site's first head
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset-route-generator.d.ts","sourceRoot":"","sources":["../../src/password-reset-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAEL,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAA;AAenC,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAC3D,eAAO,MAAM,yBAAyB,mBAAmB,CAAA;AAEzD,4CAA4C;AAC5C,eAAO,MAAM,gCAAgC,OAAO,CAAA;AACpD,8FAA8F;AAC9F,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAC/C,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,eAAO,MAAM,uBAAuB,oBAAoB,CAAA;AAExD,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,kFAC8C,CAAA;AAEjF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,mBAAmB,CAAA;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,SAAU,WAAW,KAAG,OAUvD,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,SAAU,WAAW,KAAG,MAAM,EAOnE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAChB,WAAW,KAChB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAOnD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SACvB,WAAW,KAChB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAWxE,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,OAAO,KAAG,MAWrD,CAAA;AAED,eAAO,MAAM,mBAAmB,QAsB9B,CAAA;AAcF,eAAO,MAAM,2BAA2B,aAAa,0BAA0B,KAAQ,
|
|
1
|
+
{"version":3,"file":"password-reset-route-generator.d.ts","sourceRoot":"","sources":["../../src/password-reset-route-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAEL,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,4BAA4B,CAAA;AAenC,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAC3D,eAAO,MAAM,yBAAyB,mBAAmB,CAAA;AAEzD,4CAA4C;AAC5C,eAAO,MAAM,gCAAgC,OAAO,CAAA;AACpD,8FAA8F;AAC9F,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAC/C,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,eAAO,MAAM,uBAAuB,oBAAoB,CAAA;AAExD,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,kFAC8C,CAAA;AAEjF,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,oEAC8B,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,mBAAmB,CAAA;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,SAAU,WAAW,KAAG,OAUvD,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,SAAU,WAAW,KAAG,MAAM,EAOnE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAChB,WAAW,KAChB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAOnD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SACvB,WAAW,KAChB;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAWxE,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,2BAA2B,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAW,OAAO,KAAG,MAWrD,CAAA;AAED,eAAO,MAAM,mBAAmB,QAsB9B,CAAA;AAcF,eAAO,MAAM,2BAA2B,aAAa,0BAA0B,KAAQ,MAkKtF,CAAA;AAED,eAAO,MAAM,0BAA0B,QAAO,MAsD7C,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,6FAA6F;AAC7F,eAAO,MAAM,gCAAgC,mCAAmC,CAAA;AAEhF,mFAAmF;AACnF,eAAO,MAAM,0BAA0B;gBACZ,OAAO;kBAAgB,OAAO;aAC7C,MAAM,KACf,MAAM,OAAO,MAAM,EAAE,OAAO,CAAC,CAgB/B,CAAA;AAcD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,cACrB,sBAAsB,QAC3B,kBAAkB,KACvB,IAwDF,CAAA"}
|
|
@@ -35,6 +35,8 @@ export const RESET_PASSWORD_VISITOR_LIMIT = 20;
|
|
|
35
35
|
export const DEFAULT_RESET_PAGE_PATH = '/reset-password';
|
|
36
36
|
/** The same answer for every well-formed request, whatever the address. */
|
|
37
37
|
export const FORGOT_PASSWORD_ANSWER = 'If an account exists for that email, we sent it a link to reset the password.';
|
|
38
|
+
/** What the route answers, to every address, when a link could not be kept. */
|
|
39
|
+
export const FORGOT_PASSWORD_NOT_SENT = 'We could not send the reset link. Please try again in a moment.';
|
|
38
40
|
/**
|
|
39
41
|
* The sessionStorage key the reset page reads the link's token from (mirrored
|
|
40
42
|
* in teleport-gui `RESET_TOKEN_STORAGE_KEY`). The published site's first head
|
|
@@ -273,7 +275,9 @@ module.exports = async function handler(req, res) {
|
|
|
273
275
|
return __security.sendClientError(res, 503, 'We could not reach the account service. Please try again in a moment.', err);
|
|
274
276
|
}
|
|
275
277
|
|
|
278
|
+
var link = null;
|
|
276
279
|
try {
|
|
280
|
+
await authUtils.ensurePasswordResetsUsable();
|
|
277
281
|
// Counted for every address, with an account or without, so neither the
|
|
278
282
|
// answer nor its timing differs.
|
|
279
283
|
var recipient = await __security.rateLimit({
|
|
@@ -285,17 +289,20 @@ module.exports = async function handler(req, res) {
|
|
|
285
289
|
if (user && userId != null && user.email && !recipient.allowed) {
|
|
286
290
|
console.warn('[forgot-password] reset link not sent: this address was sent ${FORGOT_PASSWORD_RECIPIENT_LIMIT} in the last hour');
|
|
287
291
|
} else if (user && userId != null && user.email) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
var token = crypto.randomBytes(32).toString('hex');
|
|
292
|
-
await authUtils.storePasswordReset(userId, sha256(token), TOKEN_TTL_SECONDS);
|
|
293
|
-
var resetUrl = trustedOrigin(req) + RESET_PAGE_PATH + TOKEN_LINK_PREFIX + token;
|
|
294
|
-
await sendResetEmail(user, resetUrl, token, __emailLocale.resolveRequestLocale(req));
|
|
295
|
-
}
|
|
292
|
+
var token = crypto.randomBytes(32).toString('hex');
|
|
293
|
+
await authUtils.storePasswordReset(userId, sha256(token), TOKEN_TTL_SECONDS);
|
|
294
|
+
link = { token: token, url: trustedOrigin(req) + RESET_PAGE_PATH + TOKEN_LINK_PREFIX + token };
|
|
296
295
|
}
|
|
297
296
|
} catch (err) {
|
|
298
|
-
|
|
297
|
+
await waitUntilElapsed(startedAt, MIN_RESPONSE_MS);
|
|
298
|
+
return __security.sendClientError(res, 503, ${JSON.stringify(FORGOT_PASSWORD_NOT_SENT)}, err);
|
|
299
|
+
}
|
|
300
|
+
if (link) {
|
|
301
|
+
try {
|
|
302
|
+
await sendResetEmail(user, link.url, link.token, __emailLocale.resolveRequestLocale(req));
|
|
303
|
+
} catch (err) {
|
|
304
|
+
console.error('[forgot-password] could not send a reset link:', err && err.message ? err.message : err);
|
|
305
|
+
}
|
|
299
306
|
}
|
|
300
307
|
|
|
301
308
|
await waitUntilElapsed(startedAt, MIN_RESPONSE_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset-route-generator.js","sourceRoot":"","sources":["../../src/password-reset-route-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"password-reset-route-generator.js","sourceRoot":"","sources":["../../src/password-reset-route-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,9 @@ export declare const securityRuntimeSpecifier: (relativePrefix: string) => strin
|
|
|
32
32
|
* itself, an IPv6 one its /64 (an IPv4 tail counted as the two groups it
|
|
33
33
|
* fills). Every rate limit keyed by visitor uses it.
|
|
34
34
|
* - `rateLimit` counts fixed windows in the app's Postgres database (table
|
|
35
|
-
* `teleport_rate_limits`,
|
|
36
|
-
*
|
|
35
|
+
* `teleport_rate_limits`, which the editor makes, created here under an
|
|
36
|
+
* advisory lock only when it is really missing), so every instance of a
|
|
37
|
+
* serverless app counts together. Only an app with no
|
|
37
38
|
* database (or no `pg` driver) counts in a bounded per-instance map; a
|
|
38
39
|
* database error counts in that map for a short while and is logged once.
|
|
39
40
|
* A request waits on the database at most 1.5 s; after a failure one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-runtime-code.d.ts","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAC3D,eAAO,MAAM,qBAAqB,UAAY,CAAA;AAC9C,eAAO,MAAM,0BAA0B,qBAAqB,CAAA;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AAEvD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,wCAAwC,CAAA;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mBAAoB,MAAM,KAAG,MACoB,CAAA;AAEtF
|
|
1
|
+
{"version":3,"file":"security-runtime-code.d.ts","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAC3D,eAAO,MAAM,qBAAqB,UAAY,CAAA;AAC9C,eAAO,MAAM,0BAA0B,qBAAqB,CAAA;AAC5D,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AAEvD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,wCAAwC,CAAA;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,mBAAoB,MAAM,KAAG,MACoB,CAAA;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,2BAA2B,QAAO,MA4gB9C,CAAA"}
|
|
@@ -33,8 +33,9 @@ export const securityRuntimeSpecifier = (relativePrefix) => `${relativePrefix}/$
|
|
|
33
33
|
* itself, an IPv6 one its /64 (an IPv4 tail counted as the two groups it
|
|
34
34
|
* fills). Every rate limit keyed by visitor uses it.
|
|
35
35
|
* - `rateLimit` counts fixed windows in the app's Postgres database (table
|
|
36
|
-
* `teleport_rate_limits`,
|
|
37
|
-
*
|
|
36
|
+
* `teleport_rate_limits`, which the editor makes, created here under an
|
|
37
|
+
* advisory lock only when it is really missing), so every instance of a
|
|
38
|
+
* serverless app counts together. Only an app with no
|
|
38
39
|
* database (or no `pg` driver) counts in a bounded per-instance map; a
|
|
39
40
|
* database error counts in that map for a short while and is logged once.
|
|
40
41
|
* A request waits on the database at most 1.5 s; after a failure one
|
|
@@ -97,6 +98,9 @@ var CLEANUP_MAX_BATCHES = 3;
|
|
|
97
98
|
var CLEANUP_QUERY_TIMEOUT_MS = 5000;
|
|
98
99
|
var MEMORY_MAX_WINDOWS = 10000;
|
|
99
100
|
|
|
101
|
+
// A site's database role may read and write its tables without being allowed
|
|
102
|
+
// to create one, and CREATE ... IF NOT EXISTS asks for that permission even when
|
|
103
|
+
// the table is there: these run only for a table that really is missing.
|
|
100
104
|
var CREATE_SQL = 'CREATE TABLE IF NOT EXISTS "' + RATE_LIMITS_TABLE + '" (' +
|
|
101
105
|
'"key" TEXT NOT NULL, "window_start" BIGINT NOT NULL, "count" INTEGER NOT NULL DEFAULT 0, ' +
|
|
102
106
|
'"expires_at" BIGINT NOT NULL, PRIMARY KEY ("key", "window_start"))';
|
|
@@ -293,7 +297,6 @@ function __memoryHit(storageKey, windowStart, windowSeconds, nowSec) {
|
|
|
293
297
|
return entry.count;
|
|
294
298
|
}
|
|
295
299
|
|
|
296
|
-
var __tableReady = false;
|
|
297
300
|
// Healthy, every request asks the database. After a failure, requests count in
|
|
298
301
|
// memory until __databaseRetryAt; then ONE request probes (it pushes the retry
|
|
299
302
|
// time back before it asks), so the requests beside it never wait on a
|
|
@@ -372,12 +375,15 @@ async function __databaseHit(storageKey, windowStart, expiresAt, nowSec) {
|
|
|
372
375
|
return within(client.query(sql, values || []), QUERY_TIMEOUT_MS);
|
|
373
376
|
};
|
|
374
377
|
var createTable = async function () {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
378
|
+
try {
|
|
379
|
+
await run('BEGIN');
|
|
380
|
+
await run(LOCK_SQL, [RATE_LIMITS_TABLE]);
|
|
381
|
+
await run(CREATE_SQL);
|
|
382
|
+
await run(INDEX_SQL);
|
|
383
|
+
await run('COMMIT');
|
|
384
|
+
} catch (err) {
|
|
385
|
+
throw new Error('the table ' + RATE_LIMITS_TABLE + ' is missing and could not be created: ' + __errorText(err));
|
|
386
|
+
}
|
|
381
387
|
};
|
|
382
388
|
var hit = function () {
|
|
383
389
|
return run(HIT_SQL, [storageKey, windowStart, expiresAt]);
|
|
@@ -385,15 +391,13 @@ async function __databaseHit(storageKey, windowStart, expiresAt, nowSec) {
|
|
|
385
391
|
var handedToCleanup = false;
|
|
386
392
|
try {
|
|
387
393
|
await within(client.connect(), CONNECT_TIMEOUT_MS);
|
|
388
|
-
if (!__tableReady) await createTable();
|
|
389
394
|
var result;
|
|
390
395
|
try {
|
|
391
396
|
result = await hit();
|
|
392
397
|
} catch (err) {
|
|
393
|
-
// The table
|
|
394
|
-
// older backup): create it
|
|
398
|
+
// The table is not there (dropped, or the database restored from an
|
|
399
|
+
// older backup): create it and count this request in it.
|
|
395
400
|
if (!err || err.code !== '42P01') throw err;
|
|
396
|
-
__tableReady = false;
|
|
397
401
|
await createTable();
|
|
398
402
|
result = await hit();
|
|
399
403
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-runtime-code.js","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAA;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAA;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,qCAAqC,CAAA;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,cAAsB,EAAU,EAAE,CACzE,GAAG,cAAc,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,0BAA0B,EAAE,CAAA;AAEtF
|
|
1
|
+
{"version":3,"file":"security-runtime-code.js","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAA;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAA;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,qCAAqC,CAAA;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,cAAsB,EAAU,EAAE,CACzE,GAAG,cAAc,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,0BAA0B,EAAE,CAAA;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvD,wBAAwB,EAAE;;2BAED,iBAAiB;2BACjB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+enD,CAAA"}
|