@proteinjs/user-server 1.22.2 → 1.22.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/CHANGELOG.md +26 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/src/authentication/SocketIOSessionWatcher.d.ts +5 -0
- package/dist/src/authentication/SocketIOSessionWatcher.d.ts.map +1 -1
- package/dist/src/authentication/SocketIOSessionWatcher.js +13 -2
- package/dist/src/authentication/SocketIOSessionWatcher.js.map +1 -1
- package/dist/src/authentication/UserStatusTableWatcher.d.ts.map +1 -1
- package/dist/src/authentication/UserStatusTableWatcher.js +2 -1
- package/dist/src/authentication/UserStatusTableWatcher.js.map +1 -1
- package/dist/src/authentication/authenticate.js +2 -2
- package/dist/src/authentication/authenticate.js.map +1 -1
- package/dist/src/authorization/userCache.d.ts.map +1 -1
- package/dist/src/authorization/userCache.js +3 -2
- package/dist/src/authorization/userCache.js.map +1 -1
- package/dist/src/routes/devLogin.d.ts.map +1 -1
- package/dist/src/routes/devLogin.js +29 -14
- package/dist/src/routes/devLogin.js.map +1 -1
- package/dist/src/routes/executePasswordReset.d.ts.map +1 -1
- package/dist/src/routes/executePasswordReset.js +7 -6
- package/dist/src/routes/executePasswordReset.js.map +1 -1
- package/dist/src/routes/initiatePasswordReset.js +2 -2
- package/dist/src/routes/initiatePasswordReset.js.map +1 -1
- package/dist/src/routes/signup.d.ts.map +1 -1
- package/dist/src/routes/signup.js +5 -2
- package/dist/src/routes/signup.js.map +1 -1
- package/dist/src/routes/validateResetPasswordToken.d.ts.map +1 -1
- package/dist/src/routes/validateResetPasswordToken.js +5 -1
- package/dist/src/routes/validateResetPasswordToken.js.map +1 -1
- package/dist/src/services/MachineCredentials.d.ts +10 -1
- package/dist/src/services/MachineCredentials.d.ts.map +1 -1
- package/dist/src/services/MachineCredentials.js +46 -15
- package/dist/src/services/MachineCredentials.js.map +1 -1
- package/dist/src/services/Roles.d.ts.map +1 -1
- package/dist/src/services/Roles.js +6 -2
- package/dist/src/services/Roles.js.map +1 -1
- package/dist/src/services/Signup.d.ts +15 -0
- package/dist/src/services/Signup.d.ts.map +1 -1
- package/dist/src/services/Signup.js +79 -27
- package/dist/src/services/Signup.js.map +1 -1
- package/dist/test/DevLogin.test.js +68 -0
- package/dist/test/DevLogin.test.js.map +1 -1
- package/dist/test/LogCapture.d.ts +10 -0
- package/dist/test/LogCapture.d.ts.map +1 -1
- package/dist/test/LogCapture.js +19 -0
- package/dist/test/LogCapture.js.map +1 -1
- package/dist/test/LogCapture.test.d.ts +2 -0
- package/dist/test/LogCapture.test.d.ts.map +1 -0
- package/dist/test/LogCapture.test.js +86 -0
- package/dist/test/LogCapture.test.js.map +1 -0
- package/dist/test/MachineAccounts.integration.test.js +156 -28
- package/dist/test/MachineAccounts.integration.test.js.map +1 -1
- package/dist/test/NoAddressesInLogs.integration.test.d.ts +2 -0
- package/dist/test/NoAddressesInLogs.integration.test.d.ts.map +1 -0
- package/dist/test/NoAddressesInLogs.integration.test.js +719 -0
- package/dist/test/NoAddressesInLogs.integration.test.js.map +1 -0
- package/dist/test/SignupRace.integration.test.d.ts +2 -0
- package/dist/test/SignupRace.integration.test.d.ts.map +1 -0
- package/dist/test/SignupRace.integration.test.js +320 -0
- package/dist/test/SignupRace.integration.test.js.map +1 -0
- package/dist/test/SignupRoute.test.js +80 -1
- package/dist/test/SignupRoute.test.js.map +1 -1
- package/dist/test/SocketIOSessionWatcher.test.d.ts +2 -0
- package/dist/test/SocketIOSessionWatcher.test.d.ts.map +1 -0
- package/dist/test/SocketIOSessionWatcher.test.js +144 -0
- package/dist/test/SocketIOSessionWatcher.test.js.map +1 -0
- package/generated/index.ts +1 -1
- package/package.json +6 -5
- package/src/authentication/SocketIOSessionWatcher.ts +13 -1
- package/src/authentication/UserStatusTableWatcher.ts +2 -1
- package/src/authentication/authenticate.ts +1 -1
- package/src/authorization/userCache.ts +3 -2
- package/src/routes/devLogin.ts +22 -10
- package/src/routes/executePasswordReset.ts +6 -5
- package/src/routes/initiatePasswordReset.ts +1 -1
- package/src/routes/signup.ts +5 -2
- package/src/routes/validateResetPasswordToken.ts +5 -1
- package/src/services/MachineCredentials.ts +44 -9
- package/src/services/Roles.ts +6 -2
- package/src/services/Signup.ts +60 -15
- package/test/DevLogin.test.ts +35 -1
- package/test/LogCapture.test.ts +29 -0
- package/test/LogCapture.ts +16 -0
- package/test/MachineAccounts.integration.test.ts +97 -22
- package/test/NoAddressesInLogs.integration.test.ts +410 -0
- package/test/SignupRace.integration.test.ts +230 -0
- package/test/SignupRoute.test.ts +54 -1
- package/test/SocketIOSessionWatcher.test.ts +86 -0
|
@@ -49,6 +49,7 @@ exports.Roles = void 0;
|
|
|
49
49
|
var db_1 = require("@proteinjs/db");
|
|
50
50
|
var user_1 = require("@proteinjs/user");
|
|
51
51
|
var logger_1 = require("@proteinjs/logger");
|
|
52
|
+
var util_node_1 = require("@proteinjs/util-node");
|
|
52
53
|
var Roles = /** @class */ (function () {
|
|
53
54
|
function Roles() {
|
|
54
55
|
this.serviceMetadata = {
|
|
@@ -132,7 +133,10 @@ var Roles = /** @class */ (function () {
|
|
|
132
133
|
}); })];
|
|
133
134
|
case 3:
|
|
134
135
|
_b.sent();
|
|
135
|
-
logger.info({
|
|
136
|
+
logger.info({
|
|
137
|
+
message: 'Break-glass admin granted by the dev first-admin door',
|
|
138
|
+
obj: { target: user.id, account: new util_node_1.RequestDigests().account(email) },
|
|
139
|
+
});
|
|
136
140
|
return [2 /*return*/, 'granted'];
|
|
137
141
|
}
|
|
138
142
|
});
|
|
@@ -219,7 +223,7 @@ var Roles = /** @class */ (function () {
|
|
|
219
223
|
_c.sent();
|
|
220
224
|
logger.info({
|
|
221
225
|
message: 'Roles granted by the dev role-bootstrap door',
|
|
222
|
-
obj: { target: user.id,
|
|
226
|
+
obj: { target: user.id, account: new util_node_1.RequestDigests().account(email), granted: outcome.granted },
|
|
223
227
|
});
|
|
224
228
|
return [2 /*return*/, outcome];
|
|
225
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Roles.js","sourceRoot":"","sources":["../../../src/services/Roles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oCAAmE;AACnE,wCAA2G;AAC3G,4CAA2C;
|
|
1
|
+
{"version":3,"file":"Roles.js","sourceRoot":"","sources":["../../../src/services/Roles.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,19 @@ export declare class Signup implements SignupService {
|
|
|
71
71
|
* (`devLogin`, which auto-creates missing same-domain test accounts). Not exposed as an RPC:
|
|
72
72
|
* the service surface is the `SignupService` INTERFACE (ServiceRouter walks its declared
|
|
73
73
|
* methods), so extra class methods stay server-internal.
|
|
74
|
+
*
|
|
75
|
+
* An address a `MachineAccount` declaration owns is never registered, whatever its row state:
|
|
76
|
+
* a person's row under it would make the boot sync refuse the declaration (it never takes over
|
|
77
|
+
* a row it does not own), so the address is refused here in plain words — the declared machine
|
|
78
|
+
* accounts of this build are the list, nothing else.
|
|
79
|
+
*
|
|
80
|
+
* 'exists' means the address has an account this call did not create — found by the check, or
|
|
81
|
+
* written by a concurrent create between the check and this insert. Two creates for one address
|
|
82
|
+
* both pass the check; the database's unique index on the address refuses the second insert, and
|
|
83
|
+
* that refusal is the same fact the check reads, so the second answers 'exists' exactly as if it
|
|
84
|
+
* had arrived a moment later: its caller gets the existing-address response, no session, and the
|
|
85
|
+
* owner's mail — never the database's sentence, which names the address. An insert that fails
|
|
86
|
+
* while the address still has no account is a real failure and throws.
|
|
74
87
|
*/
|
|
75
88
|
createAccount(account: {
|
|
76
89
|
name: string;
|
|
@@ -79,6 +92,8 @@ export declare class Signup implements SignupService {
|
|
|
79
92
|
emailVerified: boolean;
|
|
80
93
|
invitedBy: User['invitedBy'];
|
|
81
94
|
}): Promise<'created' | 'exists'>;
|
|
95
|
+
/** Whether an account holds `email` (already lowercased) — the one existence read `createAccount` makes. */
|
|
96
|
+
private hasAccount;
|
|
82
97
|
/** Resolves an invite token, distinguishing "expired" from "never existed / already revoked". */
|
|
83
98
|
private lookupInvite;
|
|
84
99
|
/** The invite email content factory the consumer registers; its absence is a misconfiguration, said aloud. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signup.d.ts","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAIlB,aAAa,EACb,wBAAwB,EAExB,MAAM,EACN,IAAI,EACJ,UAAU,
|
|
1
|
+
{"version":3,"file":"Signup.d.ts","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAIlB,aAAa,EACb,wBAAwB,EAExB,MAAM,EACN,IAAI,EACJ,UAAU,EAGX,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAGnE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEhH,MAAM,WAAW,0BAA2B,SAAQ,QAAQ;IAC1D,SAAS,IAAI,YAAY,CAAC;CAC3B;AAED,eAAO,MAAM,6BAA6B,QAAO,0BAShD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,MAAO,YAAW,aAAa;IACnC,eAAe;;oCAEM,MAAM,QAAQ,GAAG,EAAE;;MAY7C;IAEF;;;;;OAKG;IACG,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8DvE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgD5D;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiCxD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD;;;OAGG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAoD1F;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9B,GAAG,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;IA6BjC,4GAA4G;YAC9F,UAAU;IAIxB,iGAAiG;YACnF,YAAY;IAe1B,8GAA8G;IAC9G,OAAO,CAAC,iBAAiB;IAUzB,8GAA8G;IAC9G,OAAO,CAAC,eAAe;IAOvB,qGAAqG;YACvF,WAAW;CAU1B"}
|
|
@@ -56,6 +56,7 @@ var user_1 = require("@proteinjs/user");
|
|
|
56
56
|
var moment_1 = __importDefault(require("moment"));
|
|
57
57
|
var crypto_js_1 = require("crypto-js");
|
|
58
58
|
var logger_1 = require("@proteinjs/logger");
|
|
59
|
+
var util_node_1 = require("@proteinjs/util-node");
|
|
59
60
|
var email_server_1 = require("@proteinjs/email-server");
|
|
60
61
|
var reflection_1 = require("@proteinjs/reflection");
|
|
61
62
|
var PasswordHasher_1 = require("../authentication/PasswordHasher");
|
|
@@ -135,7 +136,10 @@ var Signup = /** @class */ (function () {
|
|
|
135
136
|
case 4:
|
|
136
137
|
creation = _g.sent();
|
|
137
138
|
if (!(creation === 'exists')) return [3 /*break*/, 7];
|
|
138
|
-
logger.error({
|
|
139
|
+
logger.error({
|
|
140
|
+
message: "User with this email already exists",
|
|
141
|
+
obj: { account: new util_node_1.RequestDigests().account(email) },
|
|
142
|
+
});
|
|
139
143
|
if (!config.getExistingUserEmailContent) return [3 /*break*/, 6];
|
|
140
144
|
_e = config.getExistingUserEmailContent(), text_1 = _e.text, html_1 = _e.html;
|
|
141
145
|
return [4 /*yield*/, emailSender.sendEmail(__assign({ to: email, subject: config.existingUserSubject || ((_c = config.options) === null || _c === void 0 ? void 0 : _c.subject) || 'Account already exists', text: text_1, html: html_1 }, config.options))];
|
|
@@ -148,7 +152,7 @@ var Signup = /** @class */ (function () {
|
|
|
148
152
|
return [4 /*yield*/, emailSender.sendEmail(__assign({ to: email, subject: config.newUserSubject || ((_d = config.options) === null || _d === void 0 ? void 0 : _d.subject) || 'Welcome!', text: text, html: html }, config.options))];
|
|
149
153
|
case 8:
|
|
150
154
|
_g.sent();
|
|
151
|
-
logger.info({ message: "Created user", obj: {
|
|
155
|
+
logger.info({ message: "Created user", obj: { account: new util_node_1.RequestDigests().account(email) } });
|
|
152
156
|
return [2 /*return*/, { outcome: 'created', email: email }];
|
|
153
157
|
}
|
|
154
158
|
});
|
|
@@ -156,7 +160,7 @@ var Signup = /** @class */ (function () {
|
|
|
156
160
|
};
|
|
157
161
|
Signup.prototype.sendInvite = function (email) {
|
|
158
162
|
return __awaiter(this, void 0, void 0, function () {
|
|
159
|
-
var logger, caseInsensitiveEmail, db, userRecord, config, _a, token, tokenExpiresAt, invite, userId, error_1;
|
|
163
|
+
var logger, caseInsensitiveEmail, db, userRecord, config, _a, token, tokenExpiresAt, invite, userId, error_1, digests;
|
|
160
164
|
return __generator(this, function (_b) {
|
|
161
165
|
switch (_b.label) {
|
|
162
166
|
case 0:
|
|
@@ -200,7 +204,12 @@ var Signup = /** @class */ (function () {
|
|
|
200
204
|
return [2 /*return*/, { sent: true }];
|
|
201
205
|
case 9:
|
|
202
206
|
error_1 = _b.sent();
|
|
203
|
-
|
|
207
|
+
digests = new util_node_1.RequestDigests();
|
|
208
|
+
logger.error({
|
|
209
|
+
message: 'Error sending invite',
|
|
210
|
+
obj: { invitee: digests.address(caseInsensitiveEmail) },
|
|
211
|
+
error: digests.redactError(error_1),
|
|
212
|
+
});
|
|
204
213
|
return [2 /*return*/, {
|
|
205
214
|
sent: false,
|
|
206
215
|
error: 'Error occurred.',
|
|
@@ -219,7 +228,7 @@ var Signup = /** @class */ (function () {
|
|
|
219
228
|
*/
|
|
220
229
|
Signup.prototype.resendInvite = function (email) {
|
|
221
230
|
return __awaiter(this, void 0, void 0, function () {
|
|
222
|
-
var logger, caseInsensitiveEmail, db, userRecord, invite, config, _a, token, tokenExpiresAt, error_2;
|
|
231
|
+
var logger, caseInsensitiveEmail, db, userRecord, invite, config, _a, token, tokenExpiresAt, error_2, digests;
|
|
223
232
|
return __generator(this, function (_b) {
|
|
224
233
|
switch (_b.label) {
|
|
225
234
|
case 0:
|
|
@@ -252,7 +261,12 @@ var Signup = /** @class */ (function () {
|
|
|
252
261
|
return [2 /*return*/, { sent: true }];
|
|
253
262
|
case 6:
|
|
254
263
|
error_2 = _b.sent();
|
|
255
|
-
|
|
264
|
+
digests = new util_node_1.RequestDigests();
|
|
265
|
+
logger.error({
|
|
266
|
+
message: 'Error re-sending invite',
|
|
267
|
+
obj: { invitee: digests.address(caseInsensitiveEmail) },
|
|
268
|
+
error: digests.redactError(error_2),
|
|
269
|
+
});
|
|
256
270
|
return [2 /*return*/, {
|
|
257
271
|
sent: false,
|
|
258
272
|
error: 'Error occurred.',
|
|
@@ -346,37 +360,75 @@ var Signup = /** @class */ (function () {
|
|
|
346
360
|
* (`devLogin`, which auto-creates missing same-domain test accounts). Not exposed as an RPC:
|
|
347
361
|
* the service surface is the `SignupService` INTERFACE (ServiceRouter walks its declared
|
|
348
362
|
* methods), so extra class methods stay server-internal.
|
|
363
|
+
*
|
|
364
|
+
* An address a `MachineAccount` declaration owns is never registered, whatever its row state:
|
|
365
|
+
* a person's row under it would make the boot sync refuse the declaration (it never takes over
|
|
366
|
+
* a row it does not own), so the address is refused here in plain words — the declared machine
|
|
367
|
+
* accounts of this build are the list, nothing else.
|
|
368
|
+
*
|
|
369
|
+
* 'exists' means the address has an account this call did not create — found by the check, or
|
|
370
|
+
* written by a concurrent create between the check and this insert. Two creates for one address
|
|
371
|
+
* both pass the check; the database's unique index on the address refuses the second insert, and
|
|
372
|
+
* that refusal is the same fact the check reads, so the second answers 'exists' exactly as if it
|
|
373
|
+
* had arrived a moment later: its caller gets the existing-address response, no session, and the
|
|
374
|
+
* owner's mail — never the database's sentence, which names the address. An insert that fails
|
|
375
|
+
* while the address still has no account is a real failure and throws.
|
|
349
376
|
*/
|
|
350
377
|
Signup.prototype.createAccount = function (account) {
|
|
351
378
|
return __awaiter(this, void 0, void 0, function () {
|
|
352
|
-
var
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
switch (_e.label) {
|
|
379
|
+
var email, password, error_4;
|
|
380
|
+
return __generator(this, function (_a) {
|
|
381
|
+
switch (_a.label) {
|
|
356
382
|
case 0:
|
|
357
|
-
db = (0, db_1.getDbAsSystem)();
|
|
358
383
|
email = account.email.toLowerCase();
|
|
359
|
-
|
|
384
|
+
if ((0, user_1.getMachineAccounts)().some(function (machineAccount) { return machineAccount.email === email; })) {
|
|
385
|
+
throw new Error("This address can't be registered.");
|
|
386
|
+
}
|
|
387
|
+
return [4 /*yield*/, this.hasAccount(email)];
|
|
360
388
|
case 1:
|
|
361
|
-
|
|
362
|
-
if (existingUser) {
|
|
389
|
+
if (_a.sent()) {
|
|
363
390
|
return [2 /*return*/, 'exists'];
|
|
364
391
|
}
|
|
365
|
-
_b = (_a = db).insert;
|
|
366
|
-
_c = [user_1.tables.User];
|
|
367
|
-
_d = {
|
|
368
|
-
name: account.name,
|
|
369
|
-
email: email
|
|
370
|
-
};
|
|
371
392
|
return [4 /*yield*/, new PasswordHasher_1.PasswordHasher().hash(account.password)];
|
|
372
|
-
case 2:
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
_d.invitedBy = account.invitedBy,
|
|
376
|
-
_d)]))];
|
|
393
|
+
case 2:
|
|
394
|
+
password = _a.sent();
|
|
395
|
+
_a.label = 3;
|
|
377
396
|
case 3:
|
|
378
|
-
|
|
379
|
-
return [
|
|
397
|
+
_a.trys.push([3, 5, , 7]);
|
|
398
|
+
return [4 /*yield*/, (0, db_1.getDbAsSystem)().insert(user_1.tables.User, {
|
|
399
|
+
name: account.name,
|
|
400
|
+
email: email,
|
|
401
|
+
password: password,
|
|
402
|
+
emailVerified: account.emailVerified,
|
|
403
|
+
roles: [],
|
|
404
|
+
invitedBy: account.invitedBy,
|
|
405
|
+
})];
|
|
406
|
+
case 4:
|
|
407
|
+
_a.sent();
|
|
408
|
+
return [3 /*break*/, 7];
|
|
409
|
+
case 5:
|
|
410
|
+
error_4 = _a.sent();
|
|
411
|
+
return [4 /*yield*/, this.hasAccount(email)];
|
|
412
|
+
case 6:
|
|
413
|
+
if (_a.sent()) {
|
|
414
|
+
return [2 /*return*/, 'exists'];
|
|
415
|
+
}
|
|
416
|
+
throw error_4;
|
|
417
|
+
case 7: return [2 /*return*/, 'created'];
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
};
|
|
422
|
+
/** Whether an account holds `email` (already lowercased) — the one existence read `createAccount` makes. */
|
|
423
|
+
Signup.prototype.hasAccount = function (email) {
|
|
424
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
425
|
+
var _a;
|
|
426
|
+
return __generator(this, function (_b) {
|
|
427
|
+
switch (_b.label) {
|
|
428
|
+
case 0:
|
|
429
|
+
_a = Boolean;
|
|
430
|
+
return [4 /*yield*/, (0, db_1.getDbAsSystem)().get(user_1.tables.User, { email: email })];
|
|
431
|
+
case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
|
|
380
432
|
}
|
|
381
433
|
});
|
|
382
434
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signup.js","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oCAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"Signup.js","sourceRoot":"","sources":["../../../src/services/Signup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
2
17
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
18
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
19
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -37,6 +52,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
52
|
};
|
|
38
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
54
|
var db_1 = require("@proteinjs/db");
|
|
55
|
+
var reflection_1 = require("@proteinjs/reflection");
|
|
40
56
|
var user_1 = require("@proteinjs/user");
|
|
41
57
|
var PasswordHasher_1 = require("../src/authentication/PasswordHasher");
|
|
42
58
|
var devLoginHarness_1 = require("./devLoginHarness");
|
|
@@ -190,6 +206,58 @@ describe('devLogin route', function () {
|
|
|
190
206
|
}
|
|
191
207
|
});
|
|
192
208
|
}); });
|
|
209
|
+
it('refuses a ?email a machine-account declaration owns with 400 in plain words — no session, no row', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
210
|
+
var DeclaredMachineAccount, repo, outcome, _a;
|
|
211
|
+
return __generator(this, function (_b) {
|
|
212
|
+
switch (_b.label) {
|
|
213
|
+
case 0:
|
|
214
|
+
DeclaredMachineAccount = /** @class */ (function (_super) {
|
|
215
|
+
__extends(DeclaredMachineAccount, _super);
|
|
216
|
+
// The declared machine accounts of the build are the list signup refuses from; the dev door
|
|
217
|
+
// creates missing accounts through the same function and must answer the way its other
|
|
218
|
+
// refusals do — in words, not as an unhandled throw.
|
|
219
|
+
function DeclaredMachineAccount() {
|
|
220
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
221
|
+
_this.id = 'declared-machine';
|
|
222
|
+
_this.email = 'declared.machine@test.local';
|
|
223
|
+
_this.accountName = 'Declared machine';
|
|
224
|
+
_this.roles = [];
|
|
225
|
+
_this.secretName = 'declared-machine-secret';
|
|
226
|
+
return _this;
|
|
227
|
+
}
|
|
228
|
+
return DeclaredMachineAccount;
|
|
229
|
+
}(user_1.MachineAccount));
|
|
230
|
+
repo = reflection_1.SourceRepository.get();
|
|
231
|
+
repo.namedObjectCache['@proteinjs/db/SourceRecordLoader'] = [
|
|
232
|
+
{
|
|
233
|
+
qualifiedName: '@proteinjs/user-server-test/DeclaredMachineAccount',
|
|
234
|
+
packageName: '@test/declarer',
|
|
235
|
+
object: new DeclaredMachineAccount(),
|
|
236
|
+
},
|
|
237
|
+
];
|
|
238
|
+
_b.label = 1;
|
|
239
|
+
case 1:
|
|
240
|
+
_b.trys.push([1, , 4, 5]);
|
|
241
|
+
return [4 /*yield*/, (0, devLoginHarness_1.invokeDevLogin)({ email: 'declared.machine@test.local' })];
|
|
242
|
+
case 2:
|
|
243
|
+
outcome = _b.sent();
|
|
244
|
+
expect(outcome.status).toBe(400);
|
|
245
|
+
expect(String(outcome.body)).toContain("This address can't be registered.");
|
|
246
|
+
expect(outcome.loggedInAs).toBeUndefined();
|
|
247
|
+
expect(outcome.sessionSaved).toBe(false);
|
|
248
|
+
expect(outcome.redirect).toBeUndefined();
|
|
249
|
+
_a = expect;
|
|
250
|
+
return [4 /*yield*/, getUserRow('declared.machine@test.local')];
|
|
251
|
+
case 3:
|
|
252
|
+
_a.apply(void 0, [_b.sent()]).toBeUndefined();
|
|
253
|
+
return [3 /*break*/, 5];
|
|
254
|
+
case 4:
|
|
255
|
+
delete repo.namedObjectCache['@proteinjs/db/SourceRecordLoader'];
|
|
256
|
+
return [7 /*endfinally*/];
|
|
257
|
+
case 5: return [2 /*return*/];
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
}); });
|
|
193
261
|
it('rejects a malformed same-domain ?email with 400 — no session, no stray account', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
194
262
|
var malformed, outcome, _a;
|
|
195
263
|
return __generator(this, function (_b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevLogin.test.js","sourceRoot":"","sources":["../../test/DevLogin.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DevLogin.test.js","sourceRoot":"","sources":["../../test/DevLogin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,19 @@ export declare class LogCapture {
|
|
|
8
8
|
readonly lines: string[];
|
|
9
9
|
/** How many leading characters of a token count as the token showing up in a log. */
|
|
10
10
|
private static readonly TOKEN_PREFIX_LENGTH;
|
|
11
|
+
/**
|
|
12
|
+
* An e-mail address, as the house's log check reads one: bare, or URL-encoded (`%40` for the `@`)
|
|
13
|
+
* as a logged request path carries it — a check that read only the bare spelling missed the one
|
|
14
|
+
* place an address is known to reach a log, the request log's URL.
|
|
15
|
+
*/
|
|
16
|
+
private static readonly ADDRESS_SHAPE;
|
|
11
17
|
private constructor();
|
|
12
18
|
static during(run: () => Promise<void>): Promise<LogCapture>;
|
|
13
19
|
get text(): string;
|
|
20
|
+
/** Every e-mail address the log holds, in order of appearance — a log names people by their digests, never by address. */
|
|
21
|
+
get addresses(): string[];
|
|
22
|
+
/** The capture narrowed to the writes that contain `text` — one door's lines, read with the same readers. */
|
|
23
|
+
linesContaining(text: string): LogCapture;
|
|
14
24
|
/**
|
|
15
25
|
* Fails unless the log is free of `token` in every form that would let a log reader act on it
|
|
16
26
|
* or tie a line to a row: the token, the SHA-256 digest a row stores for it, and the token's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogCapture.d.ts","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"LogCapture.d.ts","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,UAAU;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;IAT5C,qFAAqF;IACrF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IACjD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA6D;IAElG,OAAO;WAEM,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBlE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0HAA0H;IAC1H,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED,6GAA6G;IAC7G,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIzC;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAOlC"}
|
package/dist/test/LogCapture.js
CHANGED
|
@@ -106,6 +106,19 @@ var LogCapture = /** @class */ (function () {
|
|
|
106
106
|
enumerable: false,
|
|
107
107
|
configurable: true
|
|
108
108
|
});
|
|
109
|
+
Object.defineProperty(LogCapture.prototype, "addresses", {
|
|
110
|
+
/** Every e-mail address the log holds, in order of appearance — a log names people by their digests, never by address. */
|
|
111
|
+
get: function () {
|
|
112
|
+
var _a;
|
|
113
|
+
return (_a = this.text.match(LogCapture.ADDRESS_SHAPE)) !== null && _a !== void 0 ? _a : [];
|
|
114
|
+
},
|
|
115
|
+
enumerable: false,
|
|
116
|
+
configurable: true
|
|
117
|
+
});
|
|
118
|
+
/** The capture narrowed to the writes that contain `text` — one door's lines, read with the same readers. */
|
|
119
|
+
LogCapture.prototype.linesContaining = function (text) {
|
|
120
|
+
return new LogCapture(this.lines.filter(function (line) { return line.includes(text); }));
|
|
121
|
+
};
|
|
109
122
|
/**
|
|
110
123
|
* Fails unless the log is free of `token` in every form that would let a log reader act on it
|
|
111
124
|
* or tie a line to a row: the token, the SHA-256 digest a row stores for it, and the token's
|
|
@@ -121,6 +134,12 @@ var LogCapture = /** @class */ (function () {
|
|
|
121
134
|
};
|
|
122
135
|
/** How many leading characters of a token count as the token showing up in a log. */
|
|
123
136
|
LogCapture.TOKEN_PREFIX_LENGTH = 12;
|
|
137
|
+
/**
|
|
138
|
+
* An e-mail address, as the house's log check reads one: bare, or URL-encoded (`%40` for the `@`)
|
|
139
|
+
* as a logged request path carries it — a check that read only the bare spelling missed the one
|
|
140
|
+
* place an address is known to reach a log, the request log's URL.
|
|
141
|
+
*/
|
|
142
|
+
LogCapture.ADDRESS_SHAPE = /[A-Za-z0-9._%+-]+(?:@|%40)[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;
|
|
124
143
|
return LogCapture;
|
|
125
144
|
}());
|
|
126
145
|
exports.LogCapture = LogCapture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogCapture.js","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAoC;AAEpC;;;;;GAKG;AACH;
|
|
1
|
+
{"version":3,"file":"LogCapture.js","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogCapture.test.d.ts","sourceRoot":"","sources":["../../test/LogCapture.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
var LogCapture_1 = require("./LogCapture");
|
|
40
|
+
/**
|
|
41
|
+
* The log capture's address reader — what `expect(log.addresses).toEqual([])` stands on. It reads
|
|
42
|
+
* an address in every spelling a log line can carry: bare, inside a name-and-address form, and
|
|
43
|
+
* URL-encoded (`%40` for the `@`, `%2B` for a `+`) as a logged request path carries it. A digest
|
|
44
|
+
* or a bare domain is not an address.
|
|
45
|
+
*/
|
|
46
|
+
describe('LogCapture.addresses', function () {
|
|
47
|
+
it('reads an address bare, in a name-and-address form, and URL-encoded in a logged path', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
+
var log;
|
|
49
|
+
return __generator(this, function (_a) {
|
|
50
|
+
switch (_a.label) {
|
|
51
|
+
case 0: return [4 /*yield*/, LogCapture_1.LogCapture.during(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
console.log('Email sent successfully to ada@example.com');
|
|
54
|
+
console.info('Invite from "Grace" <grace.hopper@example.org>');
|
|
55
|
+
console.info('Started /dev/login?email=ada%2Blane%40example.com');
|
|
56
|
+
console.warn('Sign-in refused', { account: '0123456789abcdef', domain: 'example.com' });
|
|
57
|
+
return [2 /*return*/];
|
|
58
|
+
});
|
|
59
|
+
}); })];
|
|
60
|
+
case 1:
|
|
61
|
+
log = _a.sent();
|
|
62
|
+
expect(log.addresses).toEqual(['ada@example.com', 'grace.hopper@example.org', 'ada%2Blane%40example.com']);
|
|
63
|
+
return [2 /*return*/];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}); });
|
|
67
|
+
it('reads nothing from a log that names people by digest and domain only', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
68
|
+
var log;
|
|
69
|
+
return __generator(this, function (_a) {
|
|
70
|
+
switch (_a.label) {
|
|
71
|
+
case 0: return [4 /*yield*/, LogCapture_1.LogCapture.during(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
72
|
+
return __generator(this, function (_a) {
|
|
73
|
+
console.info('Email sent — 1 recipient (example.com)', { recipients: ['0123456789abcdef'] });
|
|
74
|
+
console.info('Finished /user/login 200');
|
|
75
|
+
return [2 /*return*/];
|
|
76
|
+
});
|
|
77
|
+
}); })];
|
|
78
|
+
case 1:
|
|
79
|
+
log = _a.sent();
|
|
80
|
+
expect(log.addresses).toEqual([]);
|
|
81
|
+
return [2 /*return*/];
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}); });
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=LogCapture.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogCapture.test.js","sourceRoot":"","sources":["../../test/LogCapture.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA0C;AAE1C;;;;;GAKG;AACH,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,EAAE,CAAC,qFAAqF,EAAE;;;;wBAC5E,qBAAM,uBAAU,CAAC,MAAM,CAAC;;4BAClC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BAC1D,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;4BAC/D,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;4BAClE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;;;yBACzF,CAAC,EAAA;;oBALI,GAAG,GAAG,SAKV;oBAEF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,CAAC,CAAC;;;;SAC5G,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE;;;;wBAC7D,qBAAM,uBAAU,CAAC,MAAM,CAAC;;4BAClC,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,UAAU,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;4BAC7F,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;;;yBAC1C,CAAC,EAAA;;oBAHI,GAAG,GAAG,SAGV;oBAEF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;;;SACnC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|