@teleporthq/teleport-plugin-next-workflows 0.45.1 → 0.45.4
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-track-outcome.test.ts +71 -3
- package/__tests__/auth-password-security.test.ts +101 -0
- package/__tests__/automations-bus.test.ts +85 -2
- package/__tests__/resolve-handler-entry-name.test.ts +21 -0
- package/__tests__/security-lists-parity.test.ts +2 -2
- package/__tests__/security-runtime.test.ts +37 -20
- 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/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/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/nodes/email/outbound-message-guard.d.ts +6 -3
- package/dist/cjs/nodes/email/outbound-message-guard.d.ts.map +1 -1
- package/dist/cjs/nodes/email/outbound-message-guard.js +8 -4
- package/dist/cjs/nodes/email/outbound-message-guard.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.js +1 -1
- package/dist/cjs/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.js +1 -1
- package/dist/cjs/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.js +1 -1
- package/dist/cjs/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.js +1 -1
- package/dist/cjs/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/cjs/nodes/types.d.ts +1 -1
- package/dist/cjs/nodes/types.d.ts.map +1 -1
- package/dist/cjs/nodes/types.js +7 -2
- package/dist/cjs/nodes/types.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/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/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/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/nodes/email/outbound-message-guard.d.ts +6 -3
- package/dist/esm/nodes/email/outbound-message-guard.d.ts.map +1 -1
- package/dist/esm/nodes/email/outbound-message-guard.js +8 -4
- package/dist/esm/nodes/email/outbound-message-guard.js.map +1 -1
- package/dist/esm/nodes/sms/sms-infobip.js +1 -1
- package/dist/esm/nodes/sms/sms-infobip.js.map +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.js +1 -1
- package/dist/esm/nodes/sms/sms-smsapi.js.map +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.js +1 -1
- package/dist/esm/nodes/sms/sms-textmagic.js.map +1 -1
- package/dist/esm/nodes/sms/sms-twilio.js +1 -1
- package/dist/esm/nodes/sms/sms-twilio.js.map +1 -1
- package/dist/esm/nodes/types.d.ts +1 -1
- package/dist/esm/nodes/types.d.ts.map +1 -1
- package/dist/esm/nodes/types.js +7 -2
- package/dist/esm/nodes/types.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/auth-generator.ts +48 -19
- package/src/automations/event-bus-source.ts +37 -23
- package/src/nodes/account/account-request-password-reset.ts +3 -2
- package/src/nodes/analytics/analytics-track-outcome.ts +17 -4
- package/src/nodes/email/outbound-message-guard.ts +13 -7
- package/src/nodes/sms/sms-infobip.ts +1 -1
- package/src/nodes/sms/sms-smsapi.ts +1 -1
- package/src/nodes/sms/sms-textmagic.ts +1 -1
- package/src/nodes/sms/sms-twilio.ts +1 -1
- package/src/nodes/types.ts +7 -2
- 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":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.emitPasswordAuthFiles = exports.collectWorkflowNodeConfigs = exports.REQUEST_PASSWORD_RESET_NODE_TYPE = exports.AUTH_PEPPER_SECRET_ENV = exports.generateResetPasswordRoute = exports.generateForgotPasswordRoute = exports.TRUSTED_ORIGIN_CODE = exports.resolveResetPagePath = exports.resetEmailSenderOf = exports.resetLinkOf = exports.resetTokenKeeperPagePaths = exports.readsKeptResetToken = exports.RESET_TOKEN_STORAGE_KEY = exports.FORGOT_PASSWORD_ANSWER = exports.DEFAULT_RESET_PAGE_PATH = exports.RESET_PASSWORD_VISITOR_LIMIT = exports.FORGOT_PASSWORD_VISITOR_LIMIT = exports.FORGOT_PASSWORD_RECIPIENT_LIMIT = exports.PASSWORD_RESET_TOKEN_TTL_SECONDS = exports.RESET_PASSWORD_ROUTE_NAME = exports.FORGOT_PASSWORD_ROUTE_NAME = void 0;
|
|
3
|
+
exports.emitPasswordAuthFiles = exports.collectWorkflowNodeConfigs = exports.REQUEST_PASSWORD_RESET_NODE_TYPE = exports.AUTH_PEPPER_SECRET_ENV = exports.generateResetPasswordRoute = exports.generateForgotPasswordRoute = exports.TRUSTED_ORIGIN_CODE = exports.resolveResetPagePath = exports.resetEmailSenderOf = exports.resetLinkOf = exports.resetTokenKeeperPagePaths = exports.readsKeptResetToken = exports.RESET_TOKEN_STORAGE_KEY = exports.FORGOT_PASSWORD_NOT_SENT = exports.FORGOT_PASSWORD_ANSWER = exports.DEFAULT_RESET_PAGE_PATH = exports.RESET_PASSWORD_VISITOR_LIMIT = exports.FORGOT_PASSWORD_VISITOR_LIMIT = exports.FORGOT_PASSWORD_RECIPIENT_LIMIT = exports.PASSWORD_RESET_TOKEN_TTL_SECONDS = exports.RESET_PASSWORD_ROUTE_NAME = exports.FORGOT_PASSWORD_ROUTE_NAME = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* The password-reset routes every project with password sign-in gets:
|
|
6
6
|
* `pages/api/auth/forgot-password.js` and `pages/api/auth/reset-password.js`.
|
|
@@ -38,6 +38,8 @@ exports.RESET_PASSWORD_VISITOR_LIMIT = 20;
|
|
|
38
38
|
exports.DEFAULT_RESET_PAGE_PATH = '/reset-password';
|
|
39
39
|
/** The same answer for every well-formed request, whatever the address. */
|
|
40
40
|
exports.FORGOT_PASSWORD_ANSWER = 'If an account exists for that email, we sent it a link to reset the password.';
|
|
41
|
+
/** What the route answers, to every address, when a link could not be kept. */
|
|
42
|
+
exports.FORGOT_PASSWORD_NOT_SENT = 'We could not send the reset link. Please try again in a moment.';
|
|
41
43
|
/**
|
|
42
44
|
* The sessionStorage key the reset page reads the link's token from (mirrored
|
|
43
45
|
* in teleport-gui `RESET_TOKEN_STORAGE_KEY`). The published site's first head
|
|
@@ -281,7 +283,9 @@ module.exports = async function handler(req, res) {
|
|
|
281
283
|
return __security.sendClientError(res, 503, 'We could not reach the account service. Please try again in a moment.', err);
|
|
282
284
|
}
|
|
283
285
|
|
|
286
|
+
var link = null;
|
|
284
287
|
try {
|
|
288
|
+
await authUtils.ensurePasswordResetsUsable();
|
|
285
289
|
// Counted for every address, with an account or without, so neither the
|
|
286
290
|
// answer nor its timing differs.
|
|
287
291
|
var recipient = await __security.rateLimit({
|
|
@@ -293,17 +297,20 @@ module.exports = async function handler(req, res) {
|
|
|
293
297
|
if (user && userId != null && user.email && !recipient.allowed) {
|
|
294
298
|
console.warn('[forgot-password] reset link not sent: this address was sent ${exports.FORGOT_PASSWORD_RECIPIENT_LIMIT} in the last hour');
|
|
295
299
|
} else if (user && userId != null && user.email) {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
var token = crypto.randomBytes(32).toString('hex');
|
|
300
|
-
await authUtils.storePasswordReset(userId, sha256(token), TOKEN_TTL_SECONDS);
|
|
301
|
-
var resetUrl = trustedOrigin(req) + RESET_PAGE_PATH + TOKEN_LINK_PREFIX + token;
|
|
302
|
-
await sendResetEmail(user, resetUrl, token, __emailLocale.resolveRequestLocale(req));
|
|
303
|
-
}
|
|
300
|
+
var token = crypto.randomBytes(32).toString('hex');
|
|
301
|
+
await authUtils.storePasswordReset(userId, sha256(token), TOKEN_TTL_SECONDS);
|
|
302
|
+
link = { token: token, url: trustedOrigin(req) + RESET_PAGE_PATH + TOKEN_LINK_PREFIX + token };
|
|
304
303
|
}
|
|
305
304
|
} catch (err) {
|
|
306
|
-
|
|
305
|
+
await waitUntilElapsed(startedAt, MIN_RESPONSE_MS);
|
|
306
|
+
return __security.sendClientError(res, 503, ${JSON.stringify(exports.FORGOT_PASSWORD_NOT_SENT)}, err);
|
|
307
|
+
}
|
|
308
|
+
if (link) {
|
|
309
|
+
try {
|
|
310
|
+
await sendResetEmail(user, link.url, link.token, __emailLocale.resolveRequestLocale(req));
|
|
311
|
+
} catch (err) {
|
|
312
|
+
console.error('[forgot-password] could not send a reset link:', err && err.message ? err.message : err);
|
|
313
|
+
}
|
|
307
314
|
}
|
|
308
315
|
|
|
309
316
|
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":";;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,+DAMmC;AACnC,yEAQmC;AACnC,uEAA8E;AAC9E,oFAAmF;AACnF,iDAAwD;AACxD,qDAA2D;AAE9C,QAAA,0BAA0B,GAAG,iBAAiB,CAAA;AAC9C,QAAA,yBAAyB,GAAG,gBAAgB,CAAA;AAEzD,4CAA4C;AAC/B,QAAA,gCAAgC,GAAG,IAAI,CAAA;AACpD,8FAA8F;AACjF,QAAA,+BAA+B,GAAG,CAAC,CAAA;AACnC,QAAA,6BAA6B,GAAG,EAAE,CAAA;AAC/C,mEAAmE;AACtD,QAAA,4BAA4B,GAAG,EAAE,CAAA;AAEjC,QAAA,uBAAuB,GAAG,iBAAiB,CAAA;AAExD,2EAA2E;AAC9D,QAAA,sBAAsB,GACjC,+EAA+E,CAAA;AAEjF;;;;;;;GAOG;AACU,QAAA,uBAAuB,GAAG,gBAAgB,CAAA;AAEvD;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,CAAC,IAAiB,EAAW,EAAE;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAA;IAChC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QAClE,OAAO,KAAK,CAAA;KACb;IACD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,+BAAuB,CAAC,CAAA;KACxE;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAVY,QAAA,mBAAmB,uBAU/B;AAED,kFAAkF;AAC3E,MAAM,yBAAyB,GAAG,CAAC,IAAiB,EAAY,EAAE;IACvE,IAAI,CAAC,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,EAAE,CAAA;KACV;IACD,MAAM,MAAM,GACV,IAAA,kCAA0B,EAAC,IAAI,CAAC,SAAS,EAAE,wCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACvF,OAAO,CAAC,IAAA,4BAAoB,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAPY,QAAA,yBAAyB,6BAOrC;AAED;;;;GAIG;AACI,MAAM,WAAW,GAAG,CACzB,IAAiB,EACoC,EAAE;IACvD,MAAM,MAAM,GACV,IAAA,kCAA0B,EAAC,IAAI,CAAC,SAAS,EAAE,wCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACvF,OAAO;QACL,aAAa,EAAE,IAAA,4BAAoB,EAAC,MAAM,CAAC,aAAa,CAAC;QACzD,eAAe,EAAE,IAAA,2BAAmB,EAAC,IAAI,CAAC;KAC3C,CAAA;AACH,CAAC,CAAA;AATY,QAAA,WAAW,eASvB;AAED;;;;GAIG;AACI,MAAM,kBAAkB,GAAG,CAChC,IAAiB,EACyD,EAAE;IAC5E,MAAM,MAAM,GACV,IAAA,kCAA0B,EAAC,IAAI,CAAC,SAAS,EAAE,wCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACvF,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7F,OAAO;QACL,aAAa,EAAE,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,EAAE;QACN,SAAS,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC7D,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;KAC1F,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,kBAAkB,sBAa9B;AAsBD;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAU,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACrB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACzB;QACA,OAAO,+BAAuB,CAAA;KAC/B;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1D,CAAC,CAAA;AAXY,QAAA,oBAAoB,wBAWhC;AAEY,QAAA,mBAAmB,GAAG;;;;;;;;;;;;;;;;4BAgBP,4DAAkC;;;;;;EAM5D,CAAA;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;EAUrB,CAAA;AAEK,MAAM,2BAA2B,GAAG,CAAC,UAAsC,EAAE,EAAU,EAAE;IAC9F,MAAM,QAAQ,GACZ,OAAO,CAAC,aAAa,IAAI,oDAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3E,CAAC,CAAC,OAAO,CAAC,aAAa;QACvB,CAAC,CAAC,IAAI,CAAA;IACV,MAAM,aAAa,GAAG,IAAA,4BAAoB,EAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAEjE,OAAO;4BACmB,IAAA,gDAAwB,EAAC,UAAU,CAAC;;EAE9D,IAAA,qDAA0B,EAAC,UAAU,CAAC;EAEtC,QAAQ;QACN,CAAC,CAAC,sEAAsE;QACxE,CAAC,CAAC,4BACN;;wBAEwB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;0BAE3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;0BAC/D,wCAAgC;;;;yCAIjB,IAAI,CAAC,SAAS,CAAC,8BAAsB,CAAC;;uBAExD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;mBAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;8BAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;sBACxD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAC;wBAC3D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;wBAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;kBACtD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;;EAEtD,cAAc;;EAEd,2BAAmB;;EAEnB,IAAA,iDAAsB,GAAE;;EAExB,IAAA,uDAA4B,EAAC;QAC7B,MAAM,EAAE,uBAAuB;QAC/B,YAAY,EAAE,eAAe;QAC7B,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,iBAAiB;KAClC,CAAC;;EAEA,IAAA,uDAA4B,EAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAgEsD,qCAA6B
|
|
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"}
|
|
@@ -37,8 +37,9 @@ exports.securityRuntimeSpecifier = securityRuntimeSpecifier;
|
|
|
37
37
|
* itself, an IPv6 one its /64 (an IPv4 tail counted as the two groups it
|
|
38
38
|
* fills). Every rate limit keyed by visitor uses it.
|
|
39
39
|
* - `rateLimit` counts fixed windows in the app's Postgres database (table
|
|
40
|
-
* `teleport_rate_limits`,
|
|
41
|
-
*
|
|
40
|
+
* `teleport_rate_limits`, which the editor makes, created here under an
|
|
41
|
+
* advisory lock only when it is really missing), so every instance of a
|
|
42
|
+
* serverless app counts together. Only an app with no
|
|
42
43
|
* database (or no `pg` driver) counts in a bounded per-instance map; a
|
|
43
44
|
* database error counts in that map for a short while and is logged once.
|
|
44
45
|
* A request waits on the database at most 1.5 s; after a failure one
|
|
@@ -101,6 +102,9 @@ var CLEANUP_MAX_BATCHES = 3;
|
|
|
101
102
|
var CLEANUP_QUERY_TIMEOUT_MS = 5000;
|
|
102
103
|
var MEMORY_MAX_WINDOWS = 10000;
|
|
103
104
|
|
|
105
|
+
// A site's database role may read and write its tables without being allowed
|
|
106
|
+
// to create one, and CREATE ... IF NOT EXISTS asks for that permission even when
|
|
107
|
+
// the table is there: these run only for a table that really is missing.
|
|
104
108
|
var CREATE_SQL = 'CREATE TABLE IF NOT EXISTS "' + RATE_LIMITS_TABLE + '" (' +
|
|
105
109
|
'"key" TEXT NOT NULL, "window_start" BIGINT NOT NULL, "count" INTEGER NOT NULL DEFAULT 0, ' +
|
|
106
110
|
'"expires_at" BIGINT NOT NULL, PRIMARY KEY ("key", "window_start"))';
|
|
@@ -297,7 +301,6 @@ function __memoryHit(storageKey, windowStart, windowSeconds, nowSec) {
|
|
|
297
301
|
return entry.count;
|
|
298
302
|
}
|
|
299
303
|
|
|
300
|
-
var __tableReady = false;
|
|
301
304
|
// Healthy, every request asks the database. After a failure, requests count in
|
|
302
305
|
// memory until __databaseRetryAt; then ONE request probes (it pushes the retry
|
|
303
306
|
// time back before it asks), so the requests beside it never wait on a
|
|
@@ -376,12 +379,15 @@ async function __databaseHit(storageKey, windowStart, expiresAt, nowSec) {
|
|
|
376
379
|
return within(client.query(sql, values || []), QUERY_TIMEOUT_MS);
|
|
377
380
|
};
|
|
378
381
|
var createTable = async function () {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
382
|
+
try {
|
|
383
|
+
await run('BEGIN');
|
|
384
|
+
await run(LOCK_SQL, [RATE_LIMITS_TABLE]);
|
|
385
|
+
await run(CREATE_SQL);
|
|
386
|
+
await run(INDEX_SQL);
|
|
387
|
+
await run('COMMIT');
|
|
388
|
+
} catch (err) {
|
|
389
|
+
throw new Error('the table ' + RATE_LIMITS_TABLE + ' is missing and could not be created: ' + __errorText(err));
|
|
390
|
+
}
|
|
385
391
|
};
|
|
386
392
|
var hit = function () {
|
|
387
393
|
return run(HIT_SQL, [storageKey, windowStart, expiresAt]);
|
|
@@ -389,15 +395,13 @@ async function __databaseHit(storageKey, windowStart, expiresAt, nowSec) {
|
|
|
389
395
|
var handedToCleanup = false;
|
|
390
396
|
try {
|
|
391
397
|
await within(client.connect(), CONNECT_TIMEOUT_MS);
|
|
392
|
-
if (!__tableReady) await createTable();
|
|
393
398
|
var result;
|
|
394
399
|
try {
|
|
395
400
|
result = await hit();
|
|
396
401
|
} catch (err) {
|
|
397
|
-
// The table
|
|
398
|
-
// older backup): create it
|
|
402
|
+
// The table is not there (dropped, or the database restored from an
|
|
403
|
+
// older backup): create it and count this request in it.
|
|
399
404
|
if (!err || err.code !== '42P01') throw err;
|
|
400
|
-
__tableReady = false;
|
|
401
405
|
await createTable();
|
|
402
406
|
result = await hit();
|
|
403
407
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-runtime-code.js","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":";;;AAAA,sDAA4D;AAE5D;;;GAGG;AACU,QAAA,yBAAyB,GAAG,kBAAkB,CAAA;AAC9C,QAAA,qBAAqB,GAAG,CAAC,OAAO,CAAC,CAAA;AACjC,QAAA,0BAA0B,GAAG,kBAAkB,CAAA;AAC/C,QAAA,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,qEAAqE;AACxD,QAAA,yBAAyB,GAAG,qCAAqC,CAAA;AAE9E;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CAAC,cAAsB,EAAU,EAAE,CACzE,GAAG,cAAc,IAAI,6BAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,kCAA0B,EAAE,CAAA;AADzE,QAAA,wBAAwB,4BACiD;AAEtF
|
|
1
|
+
{"version":3,"file":"security-runtime-code.js","sourceRoot":"","sources":["../../../src/security-runtime/security-runtime-code.ts"],"names":[],"mappings":";;;AAAA,sDAA4D;AAE5D;;;GAGG;AACU,QAAA,yBAAyB,GAAG,kBAAkB,CAAA;AAC9C,QAAA,qBAAqB,GAAG,CAAC,OAAO,CAAC,CAAA;AACjC,QAAA,0BAA0B,GAAG,kBAAkB,CAAA;AAC/C,QAAA,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,qEAAqE;AACxD,QAAA,yBAAyB,GAAG,qCAAqC,CAAA;AAE9E;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CAAC,cAAsB,EAAU,EAAE,CACzE,GAAG,cAAc,IAAI,6BAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,kCAA0B,EAAE,CAAA;AADzE,QAAA,wBAAwB,4BACiD;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACI,MAAM,2BAA2B,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BvD,IAAA,yCAAwB,GAAE;;2BAED,yBAAiB;2BACjB,iCAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+enD,CAAA;AA5gBY,QAAA,2BAA2B,+BA4gBvC"}
|