@pattern-js/mod-identity 0.3.0 → 0.4.0-main.f8ef342

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.
Files changed (63) hide show
  1. package/dist/admin-routes.d.ts +4 -0
  2. package/dist/admin-routes.d.ts.map +1 -1
  3. package/dist/admin-routes.js +16 -2
  4. package/dist/admin-routes.js.map +1 -1
  5. package/dist/api-token-provider.d.ts +18 -0
  6. package/dist/api-token-provider.d.ts.map +1 -0
  7. package/dist/api-token-provider.js +47 -0
  8. package/dist/api-token-provider.js.map +1 -0
  9. package/dist/deliver.d.ts +2 -0
  10. package/dist/deliver.d.ts.map +1 -1
  11. package/dist/deliver.js +55 -2
  12. package/dist/deliver.js.map +1 -1
  13. package/dist/frontend.d.ts.map +1 -1
  14. package/dist/frontend.js +101 -12
  15. package/dist/frontend.js.map +1 -1
  16. package/dist/index.d.ts +3 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mod.d.ts.map +1 -1
  21. package/dist/mod.js +9 -2
  22. package/dist/mod.js.map +1 -1
  23. package/dist/ops.d.ts.map +1 -1
  24. package/dist/ops.js +149 -24
  25. package/dist/ops.js.map +1 -1
  26. package/dist/pages/html.d.ts.map +1 -1
  27. package/dist/pages/html.js +1 -0
  28. package/dist/pages/html.js.map +1 -1
  29. package/dist/pages/invited.d.ts +15 -0
  30. package/dist/pages/invited.d.ts.map +1 -0
  31. package/dist/pages/invited.js +21 -0
  32. package/dist/pages/invited.js.map +1 -0
  33. package/dist/service.d.ts +92 -3
  34. package/dist/service.d.ts.map +1 -1
  35. package/dist/service.js +187 -0
  36. package/dist/service.js.map +1 -1
  37. package/dist/store/memory.d.ts.map +1 -1
  38. package/dist/store/memory.js +0 -0
  39. package/dist/store/memory.js.map +1 -1
  40. package/dist/store/migrations.d.ts.map +1 -1
  41. package/dist/store/migrations.js +35 -0
  42. package/dist/store/migrations.js.map +1 -1
  43. package/dist/store/sqlite.d.ts.map +1 -1
  44. package/dist/store/sqlite.js +121 -0
  45. package/dist/store/sqlite.js.map +1 -1
  46. package/dist/store/types.d.ts +76 -0
  47. package/dist/store/types.d.ts.map +1 -1
  48. package/dist/store/types.js.map +1 -1
  49. package/dist/workflows.d.ts.map +1 -1
  50. package/dist/workflows.js +1 -0
  51. package/dist/workflows.js.map +1 -1
  52. package/docs/index.md +66 -0
  53. package/docs/ops/identity.apiTokens.create.md +13 -0
  54. package/docs/ops/identity.apiTokens.list.md +4 -0
  55. package/docs/ops/identity.apiTokens.revoke.md +4 -0
  56. package/docs/ops/identity.invited.page.md +6 -0
  57. package/docs/ops/identity.invites.list.md +6 -0
  58. package/docs/ops/identity.invites.revoke.md +6 -0
  59. package/docs/ops/identity.users.delete.md +6 -0
  60. package/docs/ops/identity.users.invite.md +11 -7
  61. package/docs/ops/identity.users.setRoles.md +7 -5
  62. package/docs/ops/identity.users.toggleDisabled.md +6 -4
  63. package/package.json +4 -4
package/dist/ops.js CHANGED
@@ -17,11 +17,13 @@
17
17
  */
18
18
  import { AUTH_HOME_URL, value, z } from "@pattern-js/core";
19
19
  import { identityService } from "./service-key.js";
20
+ import { API_TOKEN_SCOPES, inviteStatus } from "./service.js";
20
21
  import { deliverToken } from "./deliver.js";
21
22
  import { looksLikeEmail } from "./tokens.js";
22
23
  import { renderLoginPage, renderSentPage } from "./pages/login.js";
23
24
  import { renderBootstrapPage } from "./pages/bootstrap.js";
24
25
  import { renderWelcomePage } from "./pages/welcome.js";
26
+ import { renderInvitedPage } from "./pages/invited.js";
25
27
  import { safeNextPath } from "./pages/html.js";
26
28
  /**
27
29
  * A JSON op: discrete named inputs in, a single `out` value out — a PURE domain
@@ -113,6 +115,16 @@ const publicUser = (u) => ({
113
115
  disabled: u.disabled,
114
116
  created: new Date(u.createdAt).toISOString(),
115
117
  });
118
+ /** The acting user (session principal id) — the self-targeting guards read this.
119
+ * API-token principals carry `apitoken:<id>` ids, which never match a user id. */
120
+ const actingUserId = (ctx) => (ctx.principal.kind === "user" ? ctx.principal.id : null);
121
+ /** Comma-string or array → trimmed string[] (the admin form posts a string). */
122
+ const normalizeRoles = (raw) => Array.isArray(raw)
123
+ ? raw
124
+ : String(raw ?? "")
125
+ .split(",")
126
+ .map((r) => r.trim())
127
+ .filter(Boolean);
116
128
  /* ── whoami ────────────────────────────────────────────────────────────── */
117
129
  const whoami = jsonOp("identity.whoami", "The current principal: kind, id, email, roles, scopes.", { out: "whoami" }, (_args, _svc, ctx) => {
118
130
  const p = ctx.principal;
@@ -130,42 +142,87 @@ const whoami = jsonOp("identity.whoami", "The current principal: kind, id, email
130
142
  });
131
143
  /* ── admin-surface ops (pure; gated by their routes, tagged `privileged`) ── */
132
144
  const usersList = jsonOp("identity.users.list", "List users (admin). Roles flattened for table rendering.", { out: "users" }, async (_args, svc) => (await svc.listUsers()).map(publicUser), { sensitivity: "privileged" });
133
- const usersInvite = jsonOp("identity.users.invite", 'Invite a user by email (admin): mints an invite token and delivers it via the "identity.deliverToken" hook (console fallback). Args { email, roles? (array or comma string) }.', { in: { email: z.string(), roles: z.unknown().optional() }, out: "result" }, async (args, svc, ctx) => {
145
+ const usersInvite = jsonOp("identity.users.invite", 'Invite a user by email (admin): records the invite (listable, revocable), mints its token and delivers the link via the "identity.deliverToken" hook (console fallback). Args { email, roles? (array or comma string), next? (post-first-login path), url? (the request URL — derives the link origin; PATTERN_PUBLIC_URL beats it when set) }.', { in: { email: z.string(), roles: z.unknown().optional(), next: z.string().optional(), url: z.string().optional() }, out: "result" }, async (args, svc, ctx) => {
134
146
  const email = String(args.email ?? "").trim();
135
147
  if (!looksLikeEmail(email))
136
148
  throw new Error("invalid email");
137
- const roles = Array.isArray(args.roles)
138
- ? args.roles
139
- : String(args.roles ?? "")
140
- .split(",")
141
- .map((r) => r.trim())
142
- .filter(Boolean);
143
- const issued = await svc.issueToken({
144
- purpose: "invite",
149
+ const roles = normalizeRoles(args.roles);
150
+ const next = typeof args.next === "string" && args.next.trim() ? safeNextPath(args.next.trim()) : null;
151
+ const { invite, issued } = await svc.createInvite({ email, roles, next, invitedBy: actingUserId(ctx) });
152
+ // The emailed link must be absolute: PATTERN_PUBLIC_URL wins inside
153
+ // deliverToken; the request origin (wired by the admin route) is the
154
+ // dev-mode fallback.
155
+ let origin = null;
156
+ try {
157
+ origin = args.url ? new URL(String(args.url)).origin : null;
158
+ }
159
+ catch {
160
+ /* not absolute — deliverToken falls back */
161
+ }
162
+ const { delivered, url } = await deliverToken(ctx, {
145
163
  email,
146
- ttlMs: 7 * 24 * 60 * 60 * 1000, // invites get a week, not 15 minutes
147
- data: { roles },
164
+ path: issued.path,
165
+ purpose: "invite",
166
+ origin,
167
+ expiresAt: invite.expiresAt,
148
168
  });
149
- const { delivered, url } = await deliverToken(ctx, { email, path: issued.path, purpose: "invite" });
150
169
  // Undelivered (no email channel): hand the link to the inviting admin —
151
170
  // `copy` renders as a copyable field in the admin's result view.
152
- return { ok: true, email, roles, delivered, ...(delivered ? {} : { copy: url }) };
171
+ return {
172
+ ok: true,
173
+ email,
174
+ roles,
175
+ ...(invite.next ? { next: invite.next } : {}),
176
+ expires: new Date(invite.expiresAt).toISOString(),
177
+ delivered,
178
+ ...(delivered ? {} : { copy: url }),
179
+ };
153
180
  }, { sensitivity: "privileged" });
154
- const usersSetRoles = jsonOp("identity.users.setRoles", "Set a user's roles (admin). Ends the user's sessions; the change takes effect on next login. Args { userId, roles }.", { in: { userId: z.string(), roles: z.unknown().optional() }, out: "user" }, async (args, svc) => {
155
- const roles = Array.isArray(args.roles)
156
- ? args.roles
157
- : String(args.roles ?? "")
158
- .split(",")
159
- .map((r) => r.trim())
160
- .filter(Boolean);
161
- return publicUser(await svc.setRoles(String(args.userId), roles));
181
+ const invitesList = jsonOp("identity.invites.list", "List sent invites, newest first (admin): status (pending / accepted / expired / revoked), roles, next path, who sent it.", { out: "invites" }, async (_args, svc) => {
182
+ const invites = await svc.listInvites();
183
+ const emails = new Map();
184
+ for (const i of invites) {
185
+ if (i.invitedBy && !emails.has(i.invitedBy)) {
186
+ emails.set(i.invitedBy, (await svc.getUser(i.invitedBy))?.email ?? i.invitedBy);
187
+ }
188
+ }
189
+ return invites.map((i) => ({
190
+ id: i.id,
191
+ email: i.email,
192
+ roles: i.roles.join(", ") || "—",
193
+ status: inviteStatus(i),
194
+ next: i.next ?? "",
195
+ "invited by": i.invitedBy ? (emails.get(i.invitedBy) ?? i.invitedBy) : "—",
196
+ sent: new Date(i.createdAt).toISOString(),
197
+ expires: new Date(i.expiresAt).toISOString(),
198
+ }));
199
+ }, { sensitivity: "privileged" });
200
+ const invitesRevoke = jsonOp("identity.invites.revoke", "Revoke a pending invite (admin): its link stops working immediately. Idempotent; refused once accepted. Args { inviteId }.", { in: { inviteId: z.string() }, out: "result" }, async (args, svc) => {
201
+ const row = await svc.revokeInvite(String(args.inviteId));
202
+ return { ok: true, email: row.email, status: inviteStatus(row) };
162
203
  }, { sensitivity: "privileged" });
163
- const usersToggleDisabled = jsonOp("identity.users.toggleDisabled", "Disable / re-enable a user (admin). Disabling revokes all sessions. Args { userId }.", { in: { userId: z.string() }, out: "user" }, async (args, svc) => {
204
+ const usersSetRoles = jsonOp("identity.users.setRoles", "Set a user's roles (admin) — replaces the whole set. Ends the user's sessions; refused when it would demote the last active admin. Args { userId, roles }.", { in: { userId: z.string(), roles: z.unknown().optional() }, out: "user" }, async (args, svc) => {
205
+ return publicUser(await svc.setRoles(String(args.userId), normalizeRoles(args.roles)));
206
+ }, { sensitivity: "privileged" });
207
+ const usersToggleDisabled = jsonOp("identity.users.toggleDisabled", "Disable / re-enable a user (admin). Disabling revokes all sessions; refused on yourself and on the last active admin. Args { userId }.", { in: { userId: z.string() }, out: "user" }, async (args, svc, ctx) => {
164
208
  const user = await svc.getUser(String(args.userId));
165
209
  if (!user)
166
210
  throw new Error("user not found");
211
+ if (!user.disabled && actingUserId(ctx) === user.id) {
212
+ throw new Error("you can't disable your own account — another admin has to");
213
+ }
167
214
  return publicUser(await svc.setDisabled(user.id, !user.disabled));
168
215
  }, { sensitivity: "privileged" });
216
+ const usersDelete = jsonOp("identity.users.delete", "Delete a user (admin): sessions are revoked and the user, their identity links and session rows are removed. Refused on yourself and on the last active admin. Args { userId }.", { in: { userId: z.string() }, out: "result" }, async (args, svc, ctx) => {
217
+ const user = await svc.getUser(String(args.userId));
218
+ if (!user)
219
+ throw new Error("user not found");
220
+ if (actingUserId(ctx) === user.id) {
221
+ throw new Error("you can't delete your own account — another admin has to");
222
+ }
223
+ await svc.deleteUser(user.id);
224
+ return { ok: true, deleted: user.email };
225
+ }, { sensitivity: "privileged" });
169
226
  const usersRevokeSessions = jsonOp("identity.users.revokeSessions", "Revoke every session of a user (admin): logs them out everywhere, closes their sockets. Args { userId }.", { in: { userId: z.string() }, out: "result" }, async (args, svc) => {
170
227
  await svc.revokeAllForUser(String(args.userId));
171
228
  return { ok: true };
@@ -272,6 +329,53 @@ const sessionsRevoke = jsonOp("identity.sessions.revoke", "Revoke one session (a
272
329
  await svc.revokeSession(String(args.sessionId));
273
330
  return { ok: true };
274
331
  }, { sensitivity: "privileged" });
332
+ /* ── API tokens (control-plane bearer credentials) ─────────────────────── */
333
+ const apiTokensList = jsonOp("identity.apiTokens.list", "List API tokens, newest first (admin). Secrets are never stored — only names, scopes and status.", { out: "tokens" }, async (_args, svc) => {
334
+ const rows = await svc.listApiTokens();
335
+ return rows.map((t) => ({
336
+ id: t.id,
337
+ name: t.name,
338
+ scopes: t.scopes.join(", "),
339
+ status: t.revokedAt != null ? "revoked" : t.expiresAt != null && t.expiresAt <= Date.now() ? "expired" : "active",
340
+ created: new Date(t.createdAt).toISOString(),
341
+ lastUsed: t.lastUsedAt != null ? new Date(t.lastUsedAt).toISOString() : "",
342
+ expires: t.expiresAt != null ? new Date(t.expiresAt).toISOString() : "never",
343
+ }));
344
+ }, { sensitivity: "privileged" });
345
+ const apiTokensCreate = jsonOp("identity.apiTokens.create", `Mint a scoped API token (admin). Args { name, scopes (array or comma string — of ${API_TOKEN_SCOPES.join("/")}), ttlDays? (empty = never expires) }. ` +
346
+ "Returns the RAW pat_… secret exactly once; storage keeps only its hash.", { in: { name: z.string(), scopes: z.unknown(), ttlDays: z.unknown().optional() }, out: "result" }, async (args, svc, ctx) => {
347
+ const scopes = Array.isArray(args.scopes)
348
+ ? args.scopes
349
+ : String(args.scopes ?? "")
350
+ .split(",")
351
+ .map((s) => s.trim())
352
+ .filter(Boolean);
353
+ const ttlDaysRaw = String(args.ttlDays ?? "").trim();
354
+ const ttlDays = ttlDaysRaw ? Number(ttlDaysRaw) : null;
355
+ if (ttlDays != null && (!Number.isFinite(ttlDays) || ttlDays <= 0)) {
356
+ throw new Error("ttlDays must be a positive number of days (or empty for no expiry)");
357
+ }
358
+ const minted = await svc.createApiToken({
359
+ name: String(args.name ?? ""),
360
+ scopes,
361
+ ttlMs: ttlDays == null ? null : ttlDays * 24 * 60 * 60 * 1000,
362
+ userId: ctx.principal.kind === "user" ? ctx.principal.id : null,
363
+ });
364
+ return {
365
+ ok: true,
366
+ id: minted.row.id,
367
+ name: minted.row.name,
368
+ scopes: minted.row.scopes,
369
+ expires: minted.row.expiresAt != null ? new Date(minted.row.expiresAt).toISOString() : "never",
370
+ // `copy` renders as a copyable field in the admin's result view — the
371
+ // one and only time the raw secret exists outside the caller's hands.
372
+ copy: minted.token,
373
+ };
374
+ }, { sensitivity: "privileged" });
375
+ const apiTokensRevoke = jsonOp("identity.apiTokens.revoke", "Revoke an API token (admin): it stops authenticating immediately. Idempotent. Args { tokenId }.", { in: { tokenId: z.string() }, out: "result" }, async (args, svc) => {
376
+ const row = await svc.revokeApiToken(String(args.tokenId));
377
+ return { ok: true, id: row.id, name: row.name };
378
+ }, { sensitivity: "privileged" });
275
379
  /* ── auth pages & flows ────────────────────────────────────────────────── */
276
380
  const loginPage = authOp("identity.login.page", "Render the login page from the registered login methods. Query { next?, error?, sent? }.", { query: ["next", "error", "sent"] }, (args, svc) => {
277
381
  if (args.sent)
@@ -282,7 +386,7 @@ const loginPage = authOp("identity.login.page", "Render the login page from the
282
386
  error: args.error ? String(args.error) : undefined,
283
387
  }));
284
388
  });
285
- const tokenCallback = authOp("identity.token.callback", "The login/invite callback: consumes a single-use token, finds-or-creates the user per the signup policy, mints a session and redirects with the cookie set.", { query: ["t", "next"], userAgent: true }, async (args, svc, req) => {
389
+ const tokenCallback = authOp("identity.token.callback", "The login/invite callback: consumes a single-use token and finds-or-creates the user per the signup policy. A login mints a session and redirects with the cookie set; an invite acceptance creates the account and lands on the /invited page — the first sign-in stays an explicit act.", { query: ["t", "next"], userAgent: true }, async (args, svc, req) => {
286
390
  const loginUrl = `${svc.options.mount}/login`;
287
391
  const raw = String(args.t ?? "");
288
392
  if (!raw)
@@ -294,6 +398,12 @@ const tokenCallback = authOp("identity.token.callback", "The login/invite callba
294
398
  }
295
399
  const data = token.data ?? {};
296
400
  const invite = token.purpose === "invite";
401
+ // A revoked invite must die even though its token row was just consumed —
402
+ // the record is the source of truth the admin acts on.
403
+ const inviteRecord = invite && typeof data.inviteId === "string" ? await svc.getInvite(data.inviteId) : null;
404
+ if (invite && inviteRecord?.revokedAt != null) {
405
+ return redirectTo(`${loginUrl}?error=invite-revoked`);
406
+ }
297
407
  const user = await svc.findOrCreateByIdentity({
298
408
  provider: typeof data.provider === "string" ? data.provider : "magic-link",
299
409
  subject: token.emailNorm,
@@ -306,10 +416,18 @@ const tokenCallback = authOp("identity.token.callback", "The login/invite callba
306
416
  return redirectTo(`${loginUrl}?error=signup-closed`);
307
417
  if (user.disabled)
308
418
  return redirectTo(`${loginUrl}?error=account-disabled`);
309
- const minted = await svc.mintSession(user.id, { userAgent: args.userAgent ?? null });
310
419
  const next = safeNextPath(args.next ?? data.next ?? req.home);
420
+ if (invite) {
421
+ // Acceptance ≠ sign-in: stamp the record, then explain what happened and
422
+ // hand over to the login page (which carries `next` through).
423
+ if (inviteRecord)
424
+ await svc.acceptInvite(inviteRecord.id, user.id);
425
+ return redirectTo(`${svc.options.mount}/invited?next=${encodeURIComponent(next)}`);
426
+ }
427
+ const minted = await svc.mintSession(user.id, { userAgent: args.userAgent ?? null });
311
428
  return redirectTo(next, sessionCookie(svc, minted.token));
312
429
  });
430
+ const invitedPage = authOp("identity.invited.page", "The invite-accepted interstitial: your account is ready, sign in for the first time — with a continue button carrying the invite's next path into the login page.", { query: ["next"] }, (args, svc) => page(renderInvitedPage({ mount: svc.options.mount, next: safeNextPath(args.next) })));
313
431
  const logout = authOp("identity.logout", "Revoke the current session and clear the cookie. POST (same-origin; the CSRF guard makes forged logouts inert).", {}, async (_args, svc, req) => {
314
432
  const sessionId = req.principal.kind === "user" ? req.principal.claims?.sessionId : undefined;
315
433
  if (typeof sessionId === "string")
@@ -362,17 +480,24 @@ export const identityOps = [
362
480
  usersSetRoles,
363
481
  usersToggleDisabled,
364
482
  usersRevokeSessions,
483
+ usersDelete,
365
484
  usersGet,
366
485
  usersRunStats,
367
486
  usersLoginLink,
487
+ invitesList,
488
+ invitesRevoke,
368
489
  settingsGet,
369
490
  settingsSet,
370
491
  sessionsList,
371
492
  sessionsRevoke,
493
+ apiTokensList,
494
+ apiTokensCreate,
495
+ apiTokensRevoke,
372
496
  loginPage,
373
497
  tokenCallback,
374
498
  logout,
375
499
  welcomePage,
500
+ invitedPage,
376
501
  bootstrapPage,
377
502
  bootstrapSubmit,
378
503
  ];
package/dist/ops.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ops.js","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../src/ops.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/pages/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkC1D;AAkBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI5D"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/pages/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkC1D;AAmBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI5D"}
@@ -61,6 +61,7 @@ const ERROR_MESSAGES = {
61
61
  "invalid-token": "That link is invalid, expired, or was already used. Request a fresh one.",
62
62
  "signup-closed": "Sign-ups are invite-only. Ask an admin to invite you.",
63
63
  "account-disabled": "This account is disabled.",
64
+ "invite-revoked": "That invitation has been revoked. Ask an admin for a new one.",
64
65
  "invalid-email": "That doesn't look like an email address.",
65
66
  // The fixed codes mod-auth-oidc redirects back with (?error=<code>). The
66
67
  // provider's own error text is deliberately never reflected here — only
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/pages/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,OAAO;;SAEA,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BxB,IAAI;qBACe,CAAC;AACtB,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,eAAe,EAAE,0EAA0E;IAC3F,eAAe,EAAE,uDAAuD;IACxE,kBAAkB,EAAE,2BAA2B;IAC/C,eAAe,EAAE,0CAA0C;IAC3D,yEAAyE;IACzE,wEAAwE;IACxE,uCAAuC;IACvC,YAAY,EAAE,+EAA+E;IAC7F,aAAa,EAAE,wDAAwD;IACvE,eAAe,EAAE,sEAAsE;IACvF,YAAY,EAAE,mEAAmE;IACjF,eAAe,EAAE,4FAA4F;IAC7G,oBAAoB,EAAE,6FAA6F;CACpH,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,kCAAkC,CAAC;IAC3E,OAAO,sBAAsB,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/pages/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,OAAO;;SAEA,UAAU,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BxB,IAAI;qBACe,CAAC;AACtB,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,eAAe,EAAE,0EAA0E;IAC3F,eAAe,EAAE,uDAAuD;IACxE,kBAAkB,EAAE,2BAA2B;IAC/C,gBAAgB,EAAE,+DAA+D;IACjF,eAAe,EAAE,0CAA0C;IAC3D,yEAAyE;IACzE,wEAAwE;IACxE,uCAAuC;IACvC,YAAY,EAAE,+EAA+E;IAC7F,aAAa,EAAE,wDAAwD;IACvE,eAAe,EAAE,sEAAsE;IACvF,YAAY,EAAE,mEAAmE;IACjF,eAAe,EAAE,4FAA4F;IAC7G,oBAAoB,EAAE,6FAA6F;CACpH,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,kCAAkC,CAAC;IAC3E,OAAO,sBAAsB,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @pattern-js/mod-identity — the invite-accepted interstitial.
3
+ *
4
+ * Clicking an invite link CREATES the account but doesn't sign anyone in:
5
+ * acceptance and the first sign-in are two different acts, and gluing them
6
+ * together made the flow feel like being shoved through a door. This page is
7
+ * the landing between the two — it says what just happened and hands over to
8
+ * the login screen, carrying the invite's `next` path so the first login
9
+ * lands where the inviting admin intended.
10
+ */
11
+ export declare function renderInvitedPage(opts: {
12
+ mount: string;
13
+ next: string;
14
+ }): string;
15
+ //# sourceMappingURL=invited.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invited.d.ts","sourceRoot":"","sources":["../../src/pages/invited.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAW/E"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @pattern-js/mod-identity — the invite-accepted interstitial.
3
+ *
4
+ * Clicking an invite link CREATES the account but doesn't sign anyone in:
5
+ * acceptance and the first sign-in are two different acts, and gluing them
6
+ * together made the flow feel like being shoved through a door. This page is
7
+ * the landing between the two — it says what just happened and hands over to
8
+ * the login screen, carrying the invite's `next` path so the first login
9
+ * lands where the inviting admin intended.
10
+ */
11
+ import { escapeHtml, layout, safeNextPath } from "./html.js";
12
+ export function renderInvitedPage(opts) {
13
+ const next = safeNextPath(opts.next);
14
+ const login = `${opts.mount}/login${next !== "/" ? `?next=${encodeURIComponent(next)}` : ""}`;
15
+ return layout("Invitation accepted", `<h1>Your account is ready ✦</h1>
16
+ <p>Your invitation has been accepted and your account now exists.</p>
17
+ <p>One last step: sign in for the first time. Pick any sign-in method on the next screen — it will use this same email address.</p>
18
+ <a class="btn" href="${escapeHtml(login)}">Continue to sign-in</a>
19
+ <p class="hint">Invite links are single use — from now on, you sign in like everyone else.</p>`);
20
+ }
21
+ //# sourceMappingURL=invited.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invited.js","sourceRoot":"","sources":["../../src/pages/invited.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,UAAU,iBAAiB,CAAC,IAAqC;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9F,OAAO,MAAM,CACX,qBAAqB,EACrB;;;uBAGmB,UAAU,CAAC,KAAK,CAAC;+FACuD,CAC5F,CAAC;AACJ,CAAC"}
package/dist/service.d.ts CHANGED
@@ -13,7 +13,21 @@
13
13
  */
14
14
  import type { ConnectionRegistry } from "@pattern-js/core";
15
15
  import type { ResolvedIdentityOptions } from "./options.js";
16
- import type { IdentityStores, SessionRow, TokenPurpose, TokenRow, UserRow } from "./store/types.js";
16
+ import type { ApiTokenRow, IdentityStores, InviteRow, SessionRow, TokenPurpose, TokenRow, UserRow } from "./store/types.js";
17
+ /**
18
+ * The API-token scope taxonomy (0.4.0). Granular scopes gate the control-plane
19
+ * surface (read/author/run/deploy split); `admin` is the ROOT scope — core's
20
+ * `meetsRequirement` treats it as satisfying any requirement, which is what
21
+ * makes admin sessions work against granularly-scoped routes.
22
+ */
23
+ export declare const API_TOKEN_SCOPES: readonly ["workflows:read", "workflows:write", "runs:read", "runs:write", "deploy", "admin"];
24
+ export type ApiTokenScope = (typeof API_TOKEN_SCOPES)[number];
25
+ /** Bearer tokens are self-identifying so the provider can reject fast. */
26
+ export declare const API_TOKEN_PREFIX = "pat_";
27
+ /** Invites get a week, not the 15-minute login-token TTL. */
28
+ export declare const INVITE_TTL_MS: number;
29
+ /** An invite's derived status, in precedence order. */
30
+ export declare function inviteStatus(invite: InviteRow, now?: number): "revoked" | "accepted" | "expired" | "pending";
17
31
  /** A way to log in, registered by provider mods in their `ready` hook. */
18
32
  export interface LoginMethod {
19
33
  id: string;
@@ -47,6 +61,11 @@ export interface IssuedToken {
47
61
  path: string;
48
62
  expiresAt: number;
49
63
  }
64
+ export interface MintedApiToken {
65
+ /** The RAW bearer secret (`pat_…`) — shown exactly once, stored hashed. */
66
+ token: string;
67
+ row: ApiTokenRow;
68
+ }
50
69
  export interface FindOrCreateInput {
51
70
  provider: string;
52
71
  subject: string;
@@ -63,10 +82,17 @@ export interface IdentityService {
63
82
  /** Lookup by (normalized) email — provider mods gate token issuance on this. */
64
83
  findUserByEmail(email: string): Promise<UserRow | null>;
65
84
  listUsers(): Promise<UserRow[]>;
66
- /** CAS-retried. Revokes the user's sessions — privilege changes end sessions. */
85
+ /** CAS-retried. Revokes the user's sessions — privilege changes end sessions.
86
+ * Refuses to demote the last active admin. */
67
87
  setRoles(userId: string, roles: string[]): Promise<UserRow>;
68
- /** CAS-retried. Disabling also revokes all sessions. */
88
+ /** CAS-retried. Disabling also revokes all sessions and is refused on the last active admin. */
69
89
  setDisabled(userId: string, disabled: boolean): Promise<UserRow>;
90
+ /**
91
+ * Hard-delete a user: sessions revoked first (sockets close), then the row,
92
+ * identity links and session rows are removed. Refused on the last active
93
+ * admin. Their invites/API tokens keep the id as an audit trail.
94
+ */
95
+ deleteUser(userId: string): Promise<void>;
70
96
  mintSession(userId: string, meta?: {
71
97
  userAgent?: string | null;
72
98
  ip?: string | null;
@@ -82,6 +108,37 @@ export interface IdentityService {
82
108
  data?: Record<string, unknown>;
83
109
  }): Promise<IssuedToken>;
84
110
  consumeToken(rawToken: string, purpose?: TokenPurpose): Promise<TokenRow | null>;
111
+ /** Record the invite AND mint its token (data carries { inviteId, roles, next }). */
112
+ createInvite(input: {
113
+ email: string;
114
+ roles: string[];
115
+ next?: string | null;
116
+ invitedBy?: string | null;
117
+ ttlMs?: number;
118
+ }): Promise<{
119
+ invite: InviteRow;
120
+ issued: IssuedToken;
121
+ }>;
122
+ getInvite(id: string): Promise<InviteRow | null>;
123
+ listInvites(): Promise<InviteRow[]>;
124
+ /** CAS-retried; idempotent. Refused once accepted (the account already exists). */
125
+ revokeInvite(id: string): Promise<InviteRow>;
126
+ /** Acceptance stamp (CAS-retried; a lost race means someone else stamped it). */
127
+ acceptInvite(id: string, userId: string): Promise<void>;
128
+ /** Mint a token. The raw secret is returned HERE and never again. */
129
+ createApiToken(input: {
130
+ name: string;
131
+ scopes: string[];
132
+ /** null/undefined = never expires. */
133
+ ttlMs?: number | null;
134
+ /** The minting admin (audit trail). */
135
+ userId?: string | null;
136
+ }): Promise<MintedApiToken>;
137
+ /** Raw bearer → live row (null when unknown, revoked or expired). Stamps lastUsedAt, throttled. */
138
+ verifyApiToken(rawToken: string, now?: number): Promise<ApiTokenRow | null>;
139
+ listApiTokens(): Promise<ApiTokenRow[]>;
140
+ /** CAS-retried; idempotent. */
141
+ revokeApiToken(id: string): Promise<ApiTokenRow>;
85
142
  registerLoginMethod(method: LoginMethod): void;
86
143
  loginMethods(): LoginMethod[];
87
144
  scopesForRoles(roles: string[]): string[];
@@ -106,6 +163,15 @@ export declare class DefaultIdentityService implements IdentityService {
106
163
  listUsers(): Promise<UserRow[]>;
107
164
  setRoles(userId: string, roles: string[]): Promise<UserRow>;
108
165
  setDisabled(userId: string, disabled: boolean): Promise<UserRow>;
166
+ deleteUser(userId: string): Promise<void>;
167
+ /**
168
+ * The admin floor: an app must always keep at least one enabled user whose
169
+ * roles compile to the `admin` scope. Best-effort (no global lock — two
170
+ * admins removing each other concurrently can still race), which is the
171
+ * right trade: the guard protects against the everyday mistake, not a
172
+ * malicious admin pair.
173
+ */
174
+ private assertNotLastAdmin;
109
175
  /** Read-modify-write with CAS retry under the per-user mutex. */
110
176
  private casUpdateUser;
111
177
  mintSession(userId: string, meta?: {
@@ -124,6 +190,29 @@ export declare class DefaultIdentityService implements IdentityService {
124
190
  data?: Record<string, unknown>;
125
191
  }): Promise<IssuedToken>;
126
192
  consumeToken(rawToken: string, purpose?: TokenPurpose): Promise<TokenRow | null>;
193
+ createInvite(input: {
194
+ email: string;
195
+ roles: string[];
196
+ next?: string | null;
197
+ invitedBy?: string | null;
198
+ ttlMs?: number;
199
+ }): Promise<{
200
+ invite: InviteRow;
201
+ issued: IssuedToken;
202
+ }>;
203
+ getInvite(id: string): Promise<InviteRow | null>;
204
+ listInvites(): Promise<InviteRow[]>;
205
+ revokeInvite(id: string): Promise<InviteRow>;
206
+ acceptInvite(id: string, userId: string): Promise<void>;
207
+ createApiToken(input: {
208
+ name: string;
209
+ scopes: string[];
210
+ ttlMs?: number | null;
211
+ userId?: string | null;
212
+ }): Promise<MintedApiToken>;
213
+ verifyApiToken(rawToken: string, now?: number): Promise<ApiTokenRow | null>;
214
+ listApiTokens(): Promise<ApiTokenRow[]>;
215
+ revokeApiToken(id: string): Promise<ApiTokenRow>;
127
216
  registerLoginMethod(method: LoginMethod): void;
128
217
  loginMethods(): LoginMethod[];
129
218
  scopesForRoles(roles: string[]): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}