@kelpie/server 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/errors.d.ts +18 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +17 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/modules/auth/index.d.ts.map +1 -1
- package/dist/modules/auth/index.js +21 -4
- package/dist/modules/auth/index.js.map +1 -1
- package/dist/modules/auth/repository.d.ts +2 -1
- package/dist/modules/auth/repository.d.ts.map +1 -1
- package/dist/modules/auth/repository.js +1 -0
- package/dist/modules/auth/repository.js.map +1 -1
- package/dist/modules/auth/routes.d.ts.map +1 -1
- package/dist/modules/auth/routes.js +2 -6
- package/dist/modules/auth/routes.js.map +1 -1
- package/dist/modules/auth/schema.d.ts +18 -1
- package/dist/modules/auth/schema.d.ts.map +1 -1
- package/dist/modules/auth/schema.js +12 -1
- package/dist/modules/auth/schema.js.map +1 -1
- package/dist/modules/auth/service.d.ts +18 -0
- package/dist/modules/auth/service.d.ts.map +1 -1
- package/dist/modules/auth/service.js +95 -6
- package/dist/modules/auth/service.js.map +1 -1
- package/dist/modules/auth/session.d.ts +12 -0
- package/dist/modules/auth/session.d.ts.map +1 -1
- package/dist/modules/auth/session.js +12 -0
- package/dist/modules/auth/session.js.map +1 -1
- package/dist/runtime/module.d.ts +63 -1
- package/dist/runtime/module.d.ts.map +1 -1
- package/dist/runtime/registry.d.ts.map +1 -1
- package/dist/runtime/registry.js +40 -2
- package/dist/runtime/registry.js.map +1 -1
- package/migrations/0043_external_sign_in.sql +2 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +2 -2
- package/src/index.ts +13 -1
- package/src/lib/errors.ts +30 -0
- package/src/modules/auth/index.ts +25 -4
- package/src/modules/auth/repository.ts +2 -1
- package/src/modules/auth/routes.ts +2 -8
- package/src/modules/auth/schema.ts +12 -1
- package/src/modules/auth/service.ts +143 -6
- package/src/modules/auth/session.ts +14 -0
- package/src/runtime/module.ts +70 -1
- package/src/runtime/registry.ts +54 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { APP_LINK_PATHS, buildAppLink } from '../../lib/appUrl.js';
|
|
2
2
|
import { renderEmail } from '../../lib/emailContent.js';
|
|
3
|
-
import { AppError } from '../../lib/errors.js';
|
|
3
|
+
import { AppError, ExternalSignInError } from '../../lib/errors.js';
|
|
4
4
|
import { UNIQUE_VIOLATION, postgresErrorCode } from '../../lib/database.js';
|
|
5
5
|
import { MINIMUM_PASSWORD_LENGTH, hashPassword, verifyPassword } from '../../lib/passwords.js';
|
|
6
6
|
import { generateToken, hashToken } from '../../lib/tokens.js';
|
|
@@ -35,6 +35,14 @@ function toPreferenceValues(record) {
|
|
|
35
35
|
function normaliseEmail(email) {
|
|
36
36
|
return email.trim().toLowerCase();
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* The name to use when a provider sends none. `users.name` is not nullable and
|
|
40
|
+
* an address is the only other thing an identity is guaranteed to carry.
|
|
41
|
+
*/
|
|
42
|
+
function localPartOf(email) {
|
|
43
|
+
const [local] = email.split('@');
|
|
44
|
+
return local === undefined || local.length === 0 ? email : local;
|
|
45
|
+
}
|
|
38
46
|
/**
|
|
39
47
|
* Rejects a field that is only whitespace.
|
|
40
48
|
*
|
|
@@ -64,7 +72,9 @@ export function createAuthService(dependencies) {
|
|
|
64
72
|
}
|
|
65
73
|
return user;
|
|
66
74
|
}
|
|
67
|
-
async function issueSession(db, user, device, location
|
|
75
|
+
async function issueSession(db, user, device, location,
|
|
76
|
+
/** The module that verified the identity, or null for a password sign-in. */
|
|
77
|
+
signedInVia = null) {
|
|
68
78
|
const now = dependencies.now();
|
|
69
79
|
const token = newToken();
|
|
70
80
|
const expiresAt = new Date(now.getTime() + SESSION_LIFETIME_MS);
|
|
@@ -76,6 +86,7 @@ export function createAuthService(dependencies) {
|
|
|
76
86
|
tokenHash: hashToken(token),
|
|
77
87
|
device: device ?? null,
|
|
78
88
|
location: location ?? null,
|
|
89
|
+
signedInVia,
|
|
79
90
|
lastActiveAt: now,
|
|
80
91
|
expiresAt,
|
|
81
92
|
});
|
|
@@ -149,14 +160,86 @@ export function createAuthService(dependencies) {
|
|
|
149
160
|
},
|
|
150
161
|
async logIn(input) {
|
|
151
162
|
const user = await repository.findUserByEmail(dependencies.db, normaliseEmail(input.email));
|
|
152
|
-
// Hash a throwaway password when the
|
|
153
|
-
//
|
|
163
|
+
// Hash a throwaway password when the account is unknown or has no
|
|
164
|
+
// password, so all three cases take the same time to answer.
|
|
154
165
|
const storedHash = user?.passwordHash ?? (await hashPassword('not-a-real-password-placeholder'));
|
|
155
|
-
|
|
166
|
+
// Always run the verify, even when the hash is the placeholder: skipping
|
|
167
|
+
// it would make a passwordless account answer faster than a wrong one.
|
|
168
|
+
const matches = await verifyPassword(storedHash, input.password);
|
|
169
|
+
// The null check is the guard, not the placeholder hash. Without it,
|
|
170
|
+
// whoever guessed the placeholder string would sign in to every account
|
|
171
|
+
// that has no password.
|
|
172
|
+
if (user === undefined || user.passwordHash === null || !matches) {
|
|
156
173
|
throw AppError.unauthorized('Email or password is incorrect');
|
|
157
174
|
}
|
|
158
175
|
return dependencies.transaction(({ tx }) => issueSession(tx, user, input.device, input.location));
|
|
159
176
|
},
|
|
177
|
+
/**
|
|
178
|
+
* Signs in an identity a module already verified.
|
|
179
|
+
*
|
|
180
|
+
* Core does not redo the verification and never learns the protocol. What
|
|
181
|
+
* it owns is everything downstream: finding or provisioning the account,
|
|
182
|
+
* issuing the session, and recording which module vouched for it.
|
|
183
|
+
*/
|
|
184
|
+
async completeExternalSignIn(input) {
|
|
185
|
+
// An unverified address is not an identity. A provider that does not say
|
|
186
|
+
// it checked is treated as not having checked.
|
|
187
|
+
if (!input.emailVerified) {
|
|
188
|
+
throw new ExternalSignInError('email_unverified');
|
|
189
|
+
}
|
|
190
|
+
const email = requireText(normaliseEmail(input.email), 'email');
|
|
191
|
+
const name = requireText(input.name ?? localPartOf(email), 'name');
|
|
192
|
+
const now = dependencies.now();
|
|
193
|
+
const link = async (tx, user) => {
|
|
194
|
+
// Signing in through a provider on an account whose address was never
|
|
195
|
+
// confirmed is the pre-registration takeover case: somebody registered
|
|
196
|
+
// this address with a password and never proved they own it. The
|
|
197
|
+
// provider just proved the opposite. Drop that password and every
|
|
198
|
+
// session it opened; the real owner sets a new one through a reset.
|
|
199
|
+
if (user.emailVerifiedAt === null) {
|
|
200
|
+
await repository.updateUserPassword(tx, user.id, null, now);
|
|
201
|
+
await repository.deleteAllSessionsForUser(tx, user.id);
|
|
202
|
+
}
|
|
203
|
+
// The provider proved control of the address, which is the same thing
|
|
204
|
+
// accepting an invite proves.
|
|
205
|
+
await repository.markEmailVerified(tx, user.id, now);
|
|
206
|
+
const issued = await issueSession(tx, { ...user, emailVerifiedAt: user.emailVerifiedAt ?? now }, input.device, input.location, input.verifiedBy);
|
|
207
|
+
return { ...issued, created: false };
|
|
208
|
+
};
|
|
209
|
+
const existing = await repository.findUserByEmail(dependencies.db, email);
|
|
210
|
+
if (existing !== undefined) {
|
|
211
|
+
return dependencies.transaction(({ tx }) => link(tx, existing));
|
|
212
|
+
}
|
|
213
|
+
if (input.provision === 'refuse') {
|
|
214
|
+
throw new ExternalSignInError('unknown_identity');
|
|
215
|
+
}
|
|
216
|
+
return dependencies.transaction(async ({ tx }) => {
|
|
217
|
+
let user;
|
|
218
|
+
try {
|
|
219
|
+
user = await repository.insertUser(tx, {
|
|
220
|
+
id: dependencies.createId('user'),
|
|
221
|
+
email,
|
|
222
|
+
name,
|
|
223
|
+
passwordHash: null,
|
|
224
|
+
emailVerifiedAt: now,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
if (postgresErrorCode(error) !== UNIQUE_VIOLATION) {
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
// Two first sign-ins for the same address at once. The other one won;
|
|
232
|
+
// this is now an ordinary link.
|
|
233
|
+
const raced = await repository.findUserByEmail(tx, email);
|
|
234
|
+
if (raced === undefined) {
|
|
235
|
+
throw error;
|
|
236
|
+
}
|
|
237
|
+
return link(tx, raced);
|
|
238
|
+
}
|
|
239
|
+
const issued = await issueSession(tx, user, input.device, input.location, input.verifiedBy);
|
|
240
|
+
return { ...issued, created: true };
|
|
241
|
+
});
|
|
242
|
+
},
|
|
160
243
|
async logOut(actor) {
|
|
161
244
|
await repository.deleteSession(dependencies.db, actor.userId, actor.sessionId);
|
|
162
245
|
},
|
|
@@ -181,8 +264,11 @@ export function createAuthService(dependencies) {
|
|
|
181
264
|
? {}
|
|
182
265
|
: { email: requireText(normaliseEmail(changes.email), 'email') }),
|
|
183
266
|
};
|
|
267
|
+
// A passwordless account cannot prove itself this way. It sets a password
|
|
268
|
+
// through the reset flow first, which is the same bar this check is.
|
|
184
269
|
if (changes.email !== undefined &&
|
|
185
270
|
(changes.currentPassword === undefined ||
|
|
271
|
+
user.passwordHash === null ||
|
|
186
272
|
!(await verifyPassword(user.passwordHash, changes.currentPassword)))) {
|
|
187
273
|
throw AppError.unauthorized('Current password is incorrect');
|
|
188
274
|
}
|
|
@@ -250,6 +336,7 @@ export function createAuthService(dependencies) {
|
|
|
250
336
|
location: record.location,
|
|
251
337
|
lastActiveAt: record.lastActiveAt,
|
|
252
338
|
current: record.id === actor.sessionId,
|
|
339
|
+
signedInVia: record.signedInVia,
|
|
253
340
|
}));
|
|
254
341
|
},
|
|
255
342
|
async revokeSession(actor, sessionId) {
|
|
@@ -320,7 +407,9 @@ export function createAuthService(dependencies) {
|
|
|
320
407
|
]);
|
|
321
408
|
}
|
|
322
409
|
const user = await repository.findUserById(dependencies.db, actor.userId);
|
|
323
|
-
if (user === undefined ||
|
|
410
|
+
if (user === undefined ||
|
|
411
|
+
user.passwordHash === null ||
|
|
412
|
+
!(await verifyPassword(user.passwordHash, currentPassword))) {
|
|
324
413
|
throw AppError.unauthorized('Current password is incorrect');
|
|
325
414
|
}
|
|
326
415
|
const now = dependencies.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/auth/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/auth/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,18 @@ import type { Context } from 'hono';
|
|
|
7
7
|
* key, never from a header, a path segment, or a request body.
|
|
8
8
|
*/
|
|
9
9
|
export declare const SESSION_COOKIE = "kelpie_session";
|
|
10
|
+
/**
|
|
11
|
+
* The device and location shown on the Security page come from the request
|
|
12
|
+
* itself.
|
|
13
|
+
*
|
|
14
|
+
* Here rather than in `routes.ts` because the external sign-in handler needs
|
|
15
|
+
* the same description, and a session created by a module should look the same
|
|
16
|
+
* on that page as one created by the login form.
|
|
17
|
+
*/
|
|
18
|
+
export declare function describeClient(context: Context): {
|
|
19
|
+
device?: string;
|
|
20
|
+
location?: string;
|
|
21
|
+
};
|
|
10
22
|
export interface SessionCookieOptions {
|
|
11
23
|
/** Only sent over HTTPS outside development. */
|
|
12
24
|
readonly secure: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC;;;;;;GAMG;AAEH,eAAO,MAAM,cAAc,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC;;;;;;GAMG;AAEH,eAAO,MAAM,cAAc,mBAAmB,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAIvF;AAKD,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAQvG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAQxF"}
|
|
@@ -7,6 +7,18 @@ import { setCookie } from 'hono/cookie';
|
|
|
7
7
|
* key, never from a header, a path segment, or a request body.
|
|
8
8
|
*/
|
|
9
9
|
export const SESSION_COOKIE = 'kelpie_session';
|
|
10
|
+
/**
|
|
11
|
+
* The device and location shown on the Security page come from the request
|
|
12
|
+
* itself.
|
|
13
|
+
*
|
|
14
|
+
* Here rather than in `routes.ts` because the external sign-in handler needs
|
|
15
|
+
* the same description, and a session created by a module should look the same
|
|
16
|
+
* on that page as one created by the login form.
|
|
17
|
+
*/
|
|
18
|
+
export function describeClient(context) {
|
|
19
|
+
const userAgent = context.req.header('User-Agent');
|
|
20
|
+
return userAgent === undefined ? {} : { device: userAgent };
|
|
21
|
+
}
|
|
10
22
|
/** Thirty days, matching the session row's expiry. */
|
|
11
23
|
const COOKIE_MAX_AGE_SECONDS = 30 * 24 * 60 * 60;
|
|
12
24
|
export function writeSessionCookie(context, token, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/modules/auth/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAA;AAE9C,sDAAsD;AACtD,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAOhD,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,KAAa,EAAE,OAA6B;IAC/F,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE;QACxC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,sBAAsB;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,OAA6B;IAChF,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;QACrC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,CAAC;KACV,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/modules/auth/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAElD,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC7D,CAAC;AAED,sDAAsD;AACtD,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAOhD,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,KAAa,EAAE,OAA6B;IAC/F,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE;QACxC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,sBAAsB;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,OAA6B;IAChF,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE;QACrC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,CAAC;KACV,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/runtime/module.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Handler, Hono, MiddlewareHandler } from 'hono';
|
|
1
|
+
import type { Context, Handler, Hono, MiddlewareHandler } from 'hono';
|
|
2
2
|
import type { ZodType } from 'zod';
|
|
3
3
|
import type { Actor } from '../lib/actor.ts';
|
|
4
4
|
import type { Database } from '../lib/database.ts';
|
|
@@ -51,6 +51,46 @@ export interface McpTool {
|
|
|
51
51
|
export interface McpToolRegistry {
|
|
52
52
|
tool<Input>(definition: McpToolDefinition<Input>): void;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* An identity a module verified somewhere else, handed back for core to sign in.
|
|
56
|
+
*
|
|
57
|
+
* Core never learns what OIDC or SAML is. Verification is the module's job and
|
|
58
|
+
* core does not redo it; core's job is that everything downstream of the cookie
|
|
59
|
+
* is identical to a password sign-in.
|
|
60
|
+
*/
|
|
61
|
+
export interface VerifiedIdentity {
|
|
62
|
+
readonly email: string;
|
|
63
|
+
/** Core refuses the identity when false, rather than assuming the module checked. */
|
|
64
|
+
readonly emailVerified: boolean;
|
|
65
|
+
/** The provider's display name, when it has one. The local part of the address is used otherwise. */
|
|
66
|
+
readonly name: string | null;
|
|
67
|
+
/** Who verified it, recorded on the session: the module id, optionally suffixed (`sign-in:google`). */
|
|
68
|
+
readonly verifiedBy: string;
|
|
69
|
+
/**
|
|
70
|
+
* What to do with an address core has never seen. The policy is the module's,
|
|
71
|
+
* because only it knows whether its provider vouches for strangers; executing
|
|
72
|
+
* it is core's.
|
|
73
|
+
*/
|
|
74
|
+
readonly provision: 'create' | 'refuse';
|
|
75
|
+
}
|
|
76
|
+
/** The account a completed sign-in belongs to. */
|
|
77
|
+
export interface CompletedSignInAccount {
|
|
78
|
+
readonly id: string;
|
|
79
|
+
readonly email: string;
|
|
80
|
+
readonly name: string;
|
|
81
|
+
readonly emailVerified: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface CompletedSignIn {
|
|
84
|
+
readonly account: CompletedSignInAccount;
|
|
85
|
+
/** True when this sign-in provisioned the account rather than finding it. */
|
|
86
|
+
readonly created: boolean;
|
|
87
|
+
readonly activeWorkspaceId: string | null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Completes a sign-in. Takes the Hono context because writing the session
|
|
91
|
+
* cookie on it is the point.
|
|
92
|
+
*/
|
|
93
|
+
export type ExternalSignInHandler = (context: Context, identity: VerifiedIdentity) => Promise<CompletedSignIn>;
|
|
54
94
|
/**
|
|
55
95
|
* What a module gets to build with, beyond its own contributions.
|
|
56
96
|
*
|
|
@@ -111,6 +151,28 @@ export interface ModuleContext extends ModuleServices {
|
|
|
111
151
|
* delegates to the provider `email.provider` picked.
|
|
112
152
|
*/
|
|
113
153
|
readonly email: EmailSender;
|
|
154
|
+
/**
|
|
155
|
+
* Installs the one implementation of external sign-in. Core's `auth` module
|
|
156
|
+
* calls this; a second caller fails boot.
|
|
157
|
+
*
|
|
158
|
+
* The same shape as `provideEmailSender`: a capability only one module owns,
|
|
159
|
+
* reached by every module through a proxy, so registration order does not
|
|
160
|
+
* matter to a consumer.
|
|
161
|
+
*/
|
|
162
|
+
provideExternalSignIn(handler: ExternalSignInHandler): void;
|
|
163
|
+
/**
|
|
164
|
+
* Completes a sign-in for an identity this module already verified: finds or
|
|
165
|
+
* provisions the account, issues a session, and writes the session cookie on
|
|
166
|
+
* `context`.
|
|
167
|
+
*
|
|
168
|
+
* The alternative is a module writing core's `sessions` table itself, which
|
|
169
|
+
* ties it to core's token hashing, cookie flags and expiry with nothing
|
|
170
|
+
* keeping the two in step (`modules.md`).
|
|
171
|
+
*
|
|
172
|
+
* @throws ExternalSignInError when the identity is unverified, or unknown and
|
|
173
|
+
* the module asked for `provision: 'refuse'`.
|
|
174
|
+
*/
|
|
175
|
+
completeExternalSignIn(context: Context, identity: VerifiedIdentity): Promise<CompletedSignIn>;
|
|
114
176
|
/**
|
|
115
177
|
* Registers routes that mount under `/v1/public`, take no credentials, and
|
|
116
178
|
* answer cross-origin requests from any site.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/runtime/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/runtime/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;;;GAMG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAClE;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CACxD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,qGAAqG;IACrG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,uGAAuG;IACvG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAA;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,KACvB,OAAO,CAAC,eAAe,CAAC,CAAA;AAE7B;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAA;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAA;CAC/D;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,kFAAkF;IAClF,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAA;IAC3C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IAChE;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B;;;;;;;OAOG;IACH,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC3D;;;;;;;;;;;OAWG;IACH,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9F;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAA;IACjD;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC3F;;;;;;;;;OASG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAChE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9E,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAA;IAC1C,iFAAiF;IACjF,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;CACrE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAGV,YAAY,EACZ,OAAO,EAGP,cAAc,EACd,kBAAkB,EAEnB,MAAM,aAAa,CAAA;AAIpB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IACzC,0FAA0F;IAC1F,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,SAAS,yBAAyB,EAAE,CAAA;IAC5D,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAA;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CACpC;AAwBD;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IACzC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACtC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACvD,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KACtB,CAAA;IACD;;;;;;OAMG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,CAAA;IAChF;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;IACrE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAA;CAC3E;AA2OD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiKjG"}
|
package/dist/runtime/registry.js
CHANGED
|
@@ -43,15 +43,52 @@ class EmailSenderProxy {
|
|
|
43
43
|
return this.target.send(message);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Completes a sign-in for an identity a module verified elsewhere.
|
|
48
|
+
*
|
|
49
|
+
* Same shape as `EmailSenderProxy`, and for the same reason: one module owns
|
|
50
|
+
* the implementation, every module reaches it through this object, and a
|
|
51
|
+
* consumer captures the proxy at register time but only calls it at request
|
|
52
|
+
* time, so registration order does not matter.
|
|
53
|
+
*
|
|
54
|
+
* Exactly one installer, unlike email's named registry: there is one `users`
|
|
55
|
+
* table and one session cookie, so "which implementation" is never a question
|
|
56
|
+
* an assembly should have to answer.
|
|
57
|
+
*/
|
|
58
|
+
class ExternalSignInProxy {
|
|
59
|
+
target = undefined;
|
|
60
|
+
installedBy = undefined;
|
|
61
|
+
install(moduleId, handler) {
|
|
62
|
+
if (this.installedBy !== undefined) {
|
|
63
|
+
throw new ModuleBootError([
|
|
64
|
+
`module "${moduleId}" provides external sign-in, but module "${this.installedBy}" already did`,
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
this.target = handler;
|
|
68
|
+
this.installedBy = moduleId;
|
|
69
|
+
}
|
|
70
|
+
complete(context, identity) {
|
|
71
|
+
if (this.target === undefined) {
|
|
72
|
+
return Promise.reject(new Error('external sign-in used before a module installed it. Is the auth module in the assembly?'));
|
|
73
|
+
}
|
|
74
|
+
return this.target(context, identity);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
46
77
|
/**
|
|
47
78
|
* The name the runtime uses for its built-in log sender. Reserved: a module
|
|
48
79
|
* that tries to register under this name fails boot.
|
|
49
80
|
*/
|
|
50
81
|
const LOG_PROVIDER_NAME = 'log';
|
|
51
|
-
function createModuleContext(module, accumulator, options, events, entitlements, moduleCatalog, emailProxy, providers) {
|
|
82
|
+
function createModuleContext(module, accumulator, options, events, entitlements, moduleCatalog, emailProxy, providers, externalSignIn) {
|
|
52
83
|
return {
|
|
53
84
|
...options.services,
|
|
54
85
|
email: emailProxy,
|
|
86
|
+
provideExternalSignIn(handler) {
|
|
87
|
+
externalSignIn.install(module.id, handler);
|
|
88
|
+
},
|
|
89
|
+
completeExternalSignIn(context, identity) {
|
|
90
|
+
return externalSignIn.complete(context, identity);
|
|
91
|
+
},
|
|
55
92
|
provideEmailSender(name, build) {
|
|
56
93
|
if (name === LOG_PROVIDER_NAME) {
|
|
57
94
|
throw new ModuleBootError([
|
|
@@ -160,6 +197,7 @@ export async function registerModules(options) {
|
|
|
160
197
|
const entitlements = options.entitlements ?? createEntitlementRegistry();
|
|
161
198
|
const emailProxy = new EmailSenderProxy();
|
|
162
199
|
const emailProviders = new Map();
|
|
200
|
+
const externalSignIn = new ExternalSignInProxy();
|
|
163
201
|
// The built-in log provider is always available, no module required. Named
|
|
164
202
|
// 'log' in kelpie.config.ts's email.provider picks this one. Built eagerly
|
|
165
203
|
// because it has no env to parse and never fails.
|
|
@@ -224,7 +262,7 @@ export async function registerModules(options) {
|
|
|
224
262
|
}
|
|
225
263
|
}
|
|
226
264
|
for (const module of ordered) {
|
|
227
|
-
const context = createModuleContext(module, accumulator, options, events, entitlements, moduleCatalog, emailProxy, emailProviders);
|
|
265
|
+
const context = createModuleContext(module, accumulator, options, events, entitlements, moduleCatalog, emailProxy, emailProviders, externalSignIn);
|
|
228
266
|
try {
|
|
229
267
|
await module.register(context);
|
|
230
268
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAI3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -302,6 +302,13 @@
|
|
|
302
302
|
"when": 1788600000000,
|
|
303
303
|
"tag": "0042_drop_workspace_identity",
|
|
304
304
|
"breakpoints": true
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"idx": 43,
|
|
308
|
+
"version": "7",
|
|
309
|
+
"when": 1788700000000,
|
|
310
|
+
"tag": "0043_external_sign_in",
|
|
311
|
+
"breakpoints": true
|
|
305
312
|
}
|
|
306
313
|
]
|
|
307
314
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kelpie/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "The Kelpie service as a library: module runtime, core CRM modules, REST API, MCP surface, and the shared migration pipeline.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kelpie",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@hono/node-server": "^2.0.12",
|
|
55
|
-
"@kelpie/schemas": "^0.
|
|
55
|
+
"@kelpie/schemas": "^0.12.0",
|
|
56
56
|
"@node-rs/argon2": "^2.0.2",
|
|
57
57
|
"drizzle-orm": "^0.45.2",
|
|
58
58
|
"emittery": "^2.0.0",
|
package/src/index.ts
CHANGED
|
@@ -64,13 +64,21 @@ export type { SecretCipher, SecretEncryptionConfig } from './lib/secrets.ts'
|
|
|
64
64
|
|
|
65
65
|
export {
|
|
66
66
|
AppError,
|
|
67
|
+
ExternalSignInError,
|
|
67
68
|
describeThrown,
|
|
68
69
|
describeValidationIssue,
|
|
69
70
|
internalErrorBody,
|
|
70
71
|
toErrorBody,
|
|
71
72
|
toErrorDetails,
|
|
72
73
|
} from './lib/errors.ts'
|
|
73
|
-
export type {
|
|
74
|
+
export type {
|
|
75
|
+
ErrorBody,
|
|
76
|
+
ErrorCode,
|
|
77
|
+
ErrorDetail,
|
|
78
|
+
ErrorStatus,
|
|
79
|
+
ExternalSignInRefusal,
|
|
80
|
+
ValidationIssue,
|
|
81
|
+
} from './lib/errors.ts'
|
|
74
82
|
|
|
75
83
|
export { createIdFactory, idPrefixes } from './lib/ids.ts'
|
|
76
84
|
export type { IdFactory, ObjectKind } from './lib/ids.ts'
|
|
@@ -84,6 +92,9 @@ export {
|
|
|
84
92
|
export type { CreateLoggerOptions, LogFields, Logger, LoggingDestination } from './lib/logger.ts'
|
|
85
93
|
|
|
86
94
|
export type {
|
|
95
|
+
CompletedSignIn,
|
|
96
|
+
CompletedSignInAccount,
|
|
97
|
+
ExternalSignInHandler,
|
|
87
98
|
KelpieModule,
|
|
88
99
|
McpTool,
|
|
89
100
|
McpToolDefinition,
|
|
@@ -91,6 +102,7 @@ export type {
|
|
|
91
102
|
ModuleCatalogEntry,
|
|
92
103
|
ModuleContext,
|
|
93
104
|
SchemaContribution,
|
|
105
|
+
VerifiedIdentity,
|
|
94
106
|
} from './runtime/module.ts'
|
|
95
107
|
|
|
96
108
|
export { ModuleBootError, orderModules } from './runtime/order.ts'
|
package/src/lib/errors.ts
CHANGED
|
@@ -83,6 +83,36 @@ export class AppError extends Error {
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Why core refused an identity a module handed to `completeExternalSignIn`.
|
|
88
|
+
*
|
|
89
|
+
* A reason rather than a message, so a provider module can branch on it (to
|
|
90
|
+
* redirect somewhere useful, say) without matching on English text.
|
|
91
|
+
*/
|
|
92
|
+
export type ExternalSignInRefusal = 'email_unverified' | 'unknown_identity'
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* An external sign-in core would not complete.
|
|
96
|
+
*
|
|
97
|
+
* An `AppError`, so an uncaught one still renders as the `api.md` body. No new
|
|
98
|
+
* `ErrorCode`: refusing an unverified identity is an ordinary `401`, and
|
|
99
|
+
* refusing to provision is an ordinary `403`.
|
|
100
|
+
*/
|
|
101
|
+
export class ExternalSignInError extends AppError {
|
|
102
|
+
readonly reason: ExternalSignInRefusal
|
|
103
|
+
|
|
104
|
+
constructor(reason: ExternalSignInRefusal) {
|
|
105
|
+
super(
|
|
106
|
+
reason === 'email_unverified' ? 'unauthorized' : 'forbidden',
|
|
107
|
+
reason === 'email_unverified'
|
|
108
|
+
? 'The identity provider did not verify this email address'
|
|
109
|
+
: 'No account exists for this identity',
|
|
110
|
+
)
|
|
111
|
+
this.name = 'ExternalSignInError'
|
|
112
|
+
this.reason = reason
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
86
116
|
/**
|
|
87
117
|
* Renders an `AppError` into the wire body from `api.md`. `details` is omitted
|
|
88
118
|
* rather than sent as null when the error carries none.
|