@pattern-js/mod-identity 0.2.2-main.b9393c1 → 0.3.0-main.4a77893
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/README.md +8 -7
- package/dist/mod.js +2 -2
- package/dist/mod.js.map +1 -1
- package/dist/ops.js +4 -4
- package/dist/ops.js.map +1 -1
- package/dist/pages/bootstrap.js +1 -1
- package/dist/pages/bootstrap.js.map +1 -1
- package/dist/pages/html.d.ts.map +1 -1
- package/dist/pages/html.js +9 -0
- package/dist/pages/html.js.map +1 -1
- package/dist/pages/welcome.d.ts.map +1 -1
- package/dist/pages/welcome.js +1 -2
- package/dist/pages/welcome.js.map +1 -1
- package/docs/index.md +35 -33
- package/docs/ops/identity.bootstrap.page.md +4 -3
- package/docs/ops/identity.bootstrap.submit.md +3 -3
- package/docs/ops/identity.login.page.md +5 -4
- package/docs/ops/identity.logout.md +2 -2
- package/docs/ops/identity.sessions.list.md +2 -2
- package/docs/ops/identity.sessions.revoke.md +2 -2
- package/docs/ops/identity.settings.get.md +4 -4
- package/docs/ops/identity.settings.set.md +2 -2
- package/docs/ops/identity.token.callback.md +3 -3
- package/docs/ops/identity.users.get.md +2 -2
- package/docs/ops/identity.users.invite.md +6 -6
- package/docs/ops/identity.users.list.md +5 -5
- package/docs/ops/identity.users.loginLink.md +3 -3
- package/docs/ops/identity.users.revokeSessions.md +3 -3
- package/docs/ops/identity.users.runStats.md +4 -5
- package/docs/ops/identity.users.setRoles.md +2 -2
- package/docs/ops/identity.users.toggleDisabled.md +2 -2
- package/docs/ops/identity.welcome.page.md +1 -1
- package/docs/ops/identity.whoami.md +1 -1
- package/package.json +12 -4
package/README.md
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# @pattern-js/mod-identity
|
|
2
2
|
|
|
3
|
+
[Website](https://pattern-js.dev) · [npm](https://www.npmjs.com/package/@pattern-js/mod-identity) · [framework](../../README.md)
|
|
4
|
+
|
|
3
5
|
The identity kernel for [Pattern](../../README.md): users, revocable cookie
|
|
4
6
|
sessions, roles→scopes, a single-use token system, the login page, and the
|
|
5
7
|
admin's Access screens (Users / Invite / Sessions). Login *methods* are separate
|
|
6
|
-
mods that plug into it
|
|
8
|
+
mods that plug into it. `@pattern-js/mod-auth-magic-link` is the reference.
|
|
7
9
|
|
|
8
10
|
```bash
|
|
9
11
|
npm install @pattern-js/mod-identity
|
|
@@ -11,17 +13,16 @@ npm install @pattern-js/mod-identity
|
|
|
11
13
|
|
|
12
14
|
## When to use
|
|
13
15
|
|
|
14
|
-
Install it the moment you want **users, sessions, or roles
|
|
15
|
-
who-is-this-request, gated routes. It's opt-in
|
|
16
|
+
Install it the moment you want **users, sessions, or roles**: a login page,
|
|
17
|
+
who-is-this-request, gated routes. It's opt-in; a project without it behaves
|
|
16
18
|
exactly as before. Installing it alongside `@pattern-js/mod-admin` **flips the admin
|
|
17
19
|
to secure-by-default** (`/admin` starts requiring the `admin` scope; pass
|
|
18
|
-
`adminMod({ auth: false })` to keep it open).
|
|
19
|
-
|
|
20
|
-
are.
|
|
20
|
+
`adminMod({ auth: false })` to keep it open). For a machine-to-machine API key you
|
|
21
|
+
don't need this mod. Reach for it when a *human* must prove who they are.
|
|
21
22
|
|
|
22
23
|
## Prerequisites
|
|
23
24
|
|
|
24
|
-
A login method mod
|
|
25
|
+
A login method mod, typically **`@pattern-js/mod-auth-magic-link`**. Identity owns
|
|
25
26
|
the kernel; the method owns the sign-in flow.
|
|
26
27
|
|
|
27
28
|
## Config
|
package/dist/mod.js
CHANGED
|
@@ -86,9 +86,9 @@ export function identityMod(options = {}) {
|
|
|
86
86
|
});
|
|
87
87
|
const path = `${opts.mount}/bootstrap?t=${issued.token}`;
|
|
88
88
|
const guess = `http://localhost:${process.env.PORT ?? 3000}${path}`;
|
|
89
|
-
console.log(`\n[pattern] ◆ No users yet
|
|
89
|
+
console.log(`\n[pattern] ◆ No users yet. Create the first admin with this one-time link (valid 24h):\n` +
|
|
90
90
|
`[pattern] ${guess}\n` +
|
|
91
|
-
`[pattern] (path: ${path}
|
|
91
|
+
`[pattern] (path: ${path}; adjust host/port if your app serves elsewhere)\n`);
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
94
|
}
|
package/dist/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"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"}
|
package/dist/ops.js
CHANGED
|
@@ -151,7 +151,7 @@ const usersInvite = jsonOp("identity.users.invite", 'Invite a user by email (adm
|
|
|
151
151
|
// `copy` renders as a copyable field in the admin's result view.
|
|
152
152
|
return { ok: true, email, roles, delivered, ...(delivered ? {} : { copy: url }) };
|
|
153
153
|
}, { sensitivity: "privileged" });
|
|
154
|
-
const usersSetRoles = jsonOp("identity.users.setRoles", "Set a user's roles (admin). Ends the user's sessions
|
|
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
155
|
const roles = Array.isArray(args.roles)
|
|
156
156
|
? args.roles
|
|
157
157
|
: String(args.roles ?? "")
|
|
@@ -166,7 +166,7 @@ const usersToggleDisabled = jsonOp("identity.users.toggleDisabled", "Disable / r
|
|
|
166
166
|
throw new Error("user not found");
|
|
167
167
|
return publicUser(await svc.setDisabled(user.id, !user.disabled));
|
|
168
168
|
}, { sensitivity: "privileged" });
|
|
169
|
-
const usersRevokeSessions = jsonOp("identity.users.revokeSessions", "Revoke every session of a user (admin)
|
|
169
|
+
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
170
|
await svc.revokeAllForUser(String(args.userId));
|
|
171
171
|
return { ok: true };
|
|
172
172
|
}, { sensitivity: "privileged" });
|
|
@@ -230,7 +230,7 @@ const usersRunStats = jsonOp("identity.users.runStats", "Per-workflow run counts
|
|
|
230
230
|
"last run": new Date(a.lastRun).toLocaleString(),
|
|
231
231
|
}));
|
|
232
232
|
}, { sensitivity: "privileged" });
|
|
233
|
-
const usersLoginLink = jsonOp("identity.users.loginLink", "Mint a single-use sign-in link for a user (admin)
|
|
233
|
+
const usersLoginLink = jsonOp("identity.users.loginLink", "Mint a single-use sign-in link for a user (admin), for handing over manually when no email/SMS delivery is wired. Args { userId }.", { in: { userId: z.string() }, out: "result" }, async (args, svc) => {
|
|
234
234
|
const user = await svc.getUser(String(args.userId));
|
|
235
235
|
if (!user)
|
|
236
236
|
throw new Error("user not found");
|
|
@@ -247,7 +247,7 @@ const usersLoginLink = jsonOp("identity.users.loginLink", "Mint a single-use sig
|
|
|
247
247
|
};
|
|
248
248
|
}, { sensitivity: "privileged" });
|
|
249
249
|
const settingsGet = jsonOp("identity.settings.get", "Current identity settings (admin): the effective signup policy.", { out: "settings" }, async (_args, svc) => ({ signup: await svc.getSignup() }), { sensitivity: "privileged" });
|
|
250
|
-
const settingsSet = jsonOp("identity.settings.set", 'Update identity settings (admin). Args { signup: "open" | "invite" }. Persisted
|
|
250
|
+
const settingsSet = jsonOp("identity.settings.set", 'Update identity settings (admin). Args { signup: "open" | "invite" }. Persisted, so it survives restarts.', { in: { signup: z.string().optional() }, out: "result" }, async (args, svc) => {
|
|
251
251
|
if (args.signup !== undefined)
|
|
252
252
|
await svc.setSignup(args.signup);
|
|
253
253
|
return { signup: await svc.getSignup() };
|
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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"}
|
package/dist/pages/bootstrap.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { escapeHtml, errorBanner, layout } from "./html.js";
|
|
9
9
|
export function renderBootstrapPage(opts) {
|
|
10
10
|
return layout("Welcome to Pattern", `<h1>Create the first account</h1>
|
|
11
|
-
<p>This one-time link sets up the owner of this Pattern instance${opts.error ? "" : "
|
|
11
|
+
<p>This one-time link sets up the owner of this Pattern instance${opts.error ? "" : ", which becomes an admin"}.</p>
|
|
12
12
|
${errorBanner(opts.error)}
|
|
13
13
|
<form method="post" action="${escapeHtml(opts.mount)}/bootstrap">
|
|
14
14
|
<label for="email">Your email</label>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/pages/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,IAAsD;IACxF,OAAO,MAAM,CACX,oBAAoB,EACpB;kEAC8D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/pages/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,IAAsD;IACxF,OAAO,MAAM,CACX,oBAAoB,EACpB;kEAC8D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;EAC5G,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;8BACK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;uCAKb,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;wFAG2B,CACrF,CAAC;AACJ,CAAC"}
|
package/dist/pages/html.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/pages/html.js
CHANGED
|
@@ -62,6 +62,15 @@ const ERROR_MESSAGES = {
|
|
|
62
62
|
"signup-closed": "Sign-ups are invite-only. Ask an admin to invite you.",
|
|
63
63
|
"account-disabled": "This account is disabled.",
|
|
64
64
|
"invalid-email": "That doesn't look like an email address.",
|
|
65
|
+
// The fixed codes mod-auth-oidc redirects back with (?error=<code>). The
|
|
66
|
+
// provider's own error text is deliberately never reflected here — only
|
|
67
|
+
// these vetted strings reach the page.
|
|
68
|
+
"oidc-state": "That sign-in attempt expired or was opened in a different browser. Try again.",
|
|
69
|
+
"oidc-failed": "The identity provider declined the sign-in. Try again.",
|
|
70
|
+
"oidc-exchange": "Couldn't complete the sign-in with the identity provider. Try again.",
|
|
71
|
+
"oidc-token": "The identity provider's response couldn't be verified. Try again.",
|
|
72
|
+
"oidc-no-email": "Your identity provider didn't share an email address, which this app needs to sign you in.",
|
|
73
|
+
"email-not-verified": "Your identity provider hasn't verified this email address. Verify it there, then try again.",
|
|
65
74
|
};
|
|
66
75
|
export function errorBanner(code) {
|
|
67
76
|
if (!code)
|
package/dist/pages/html.js.map
CHANGED
|
@@ -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;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/pages/welcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/pages/welcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAWtG"}
|
package/dist/pages/welcome.js
CHANGED
|
@@ -10,8 +10,7 @@ export function renderWelcomePage(opts) {
|
|
|
10
10
|
const who = opts.name ? `${opts.name} (${opts.email})` : opts.email;
|
|
11
11
|
return layout("Signed in", `<h1>You're in ✦</h1>
|
|
12
12
|
<p>Signed in as <strong>${escapeHtml(who)}</strong>.</p>
|
|
13
|
-
<p>This instance has no frontend registered, so there's nowhere to redirect you
|
|
14
|
-
your session cookie is set and every protected route now answers to you.</p>
|
|
13
|
+
<p>This instance has no frontend registered, so there's nowhere to redirect you. Your session cookie is set and every protected route now answers to you.</p>
|
|
15
14
|
<form method="post" action="${escapeHtml(opts.mount)}/logout"><button type="submit">Sign out</button></form>
|
|
16
15
|
<p class="hint">Apps advertise a post-login home via the <code>AUTH_HOME_URL</code> service
|
|
17
16
|
(the admin mod does this automatically).</p>`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/pages/welcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAAC,IAA4D;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACpE,OAAO,MAAM,CACX,WAAW,EACX;0BACsB,UAAU,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/pages/welcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAAC,IAA4D;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACpE,OAAO,MAAM,CACX,WAAW,EACX;0BACsB,UAAU,CAAC,GAAG,CAAC;;8BAEX,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;6CAEP,CAC1C,CAAC;AACJ,CAAC"}
|
package/docs/index.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
`@pattern-js/mod-identity` is the identity kernel: users, revocable cookie
|
|
4
4
|
sessions, roles→scopes, a single-use token system, the login page, and the
|
|
5
5
|
admin's Access screens (Users / Invite / Sessions). Login *methods* are
|
|
6
|
-
separate mods that plug into it
|
|
6
|
+
separate mods that plug into it. `@pattern-js/mod-auth-magic-link` is the
|
|
7
7
|
reference.
|
|
8
8
|
|
|
9
9
|
```jsonc
|
|
@@ -12,24 +12,24 @@ reference.
|
|
|
12
12
|
|
|
13
13
|
## When to use it
|
|
14
14
|
|
|
15
|
-
Install it the moment you want **users, sessions, or roles
|
|
16
|
-
who-is-this-request, gated routes. It is opt-in
|
|
17
|
-
exactly as before.
|
|
18
|
-
admin to secure-by-default
|
|
15
|
+
Install it the moment you want **users, sessions, or roles**: a login page,
|
|
16
|
+
who-is-this-request, gated routes. It is opt-in; a project without it behaves
|
|
17
|
+
exactly as before. Installing it alongside `@pattern-js/mod-admin` **flips the
|
|
18
|
+
admin to secure-by-default**: `/admin` (API + SPA) starts requiring the
|
|
19
19
|
`admin` scope, and a logged-out browser is 302'd to the login page. Pass
|
|
20
|
-
`adminMod({ auth: false })` to keep the admin open anyway.
|
|
20
|
+
`adminMod({ auth: false })` to keep the admin open anyway. For a
|
|
21
21
|
machine-to-machine API key, you don't need this mod; reach for it when a
|
|
22
22
|
*human* has to prove who they are.
|
|
23
23
|
|
|
24
24
|
## Roles → scopes
|
|
25
25
|
|
|
26
26
|
Users carry **roles** (strings); the `roles` map compiles them into **scopes**
|
|
27
|
-
on the principal at **resolve time
|
|
27
|
+
on the principal at **resolve time**. Editing the map applies on the *next*
|
|
28
28
|
request, and sessions store no scopes of their own. The default map is
|
|
29
|
-
`{ admin: ["admin"] }`. Adding application scopes
|
|
29
|
+
`{ admin: ["admin"] }`. Adding application scopes means editing this map:
|
|
30
30
|
|
|
31
31
|
```js
|
|
32
|
-
// mods/identity.mjs
|
|
32
|
+
// mods/identity.mjs (a local wrapper mod)
|
|
33
33
|
import { identityMod } from "@pattern-js/mod-identity";
|
|
34
34
|
export default identityMod({
|
|
35
35
|
roles: { admin: ["admin"], editor: ["edit", "read"], viewer: ["read"] },
|
|
@@ -40,7 +40,7 @@ Now a user with role `editor` resolves to scopes `["edit","read"]`; gate a
|
|
|
40
40
|
route with `requireAuth: { scopes: ["edit"] }` and both `admin` (if you also
|
|
41
41
|
grant it `edit`) and `editor` users get through, `viewer` does not. The same
|
|
42
42
|
roles surface on the admin Users screen and are settable there
|
|
43
|
-
(`identity.users.setRoles
|
|
43
|
+
(`identity.users.setRoles`, which **ends the user's sessions**, because a
|
|
44
44
|
privilege change must re-login).
|
|
45
45
|
|
|
46
46
|
## Bootstrap on first boot
|
|
@@ -49,32 +49,32 @@ With an empty user store, the mod's `ready` hook mints a one-time **bootstrap
|
|
|
49
49
|
token** (valid 24h) and prints a setup link to the **server console**:
|
|
50
50
|
|
|
51
51
|
```
|
|
52
|
-
[pattern] ◆ No users yet
|
|
52
|
+
[pattern] ◆ No users yet. Create the first admin with this one-time link (valid 24h):
|
|
53
53
|
[pattern] http://localhost:3000/auth/bootstrap?t=…
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Open it: `GET /auth/bootstrap?t=…` renders a form, the `POST` creates the first
|
|
57
|
-
user (roles `["admin"]` by default
|
|
58
|
-
the *same single-use-token primitive* as login and invites, so there's
|
|
59
|
-
special-case admin password anywhere.
|
|
57
|
+
user (roles `["admin"]` by default, the `bootstrapRoles` option) and signs them
|
|
58
|
+
in. It's the *same single-use-token primitive* as login and invites, so there's
|
|
59
|
+
no special-case admin password anywhere.
|
|
60
60
|
|
|
61
61
|
## Sessions
|
|
62
62
|
|
|
63
63
|
Opaque 256-bit secrets in an `HttpOnly; SameSite=Lax` cookie (`pattern_session`
|
|
64
64
|
by default); only the sha256 is stored. Sliding 30-day expiry with throttled
|
|
65
|
-
touches. Sessions are **revocable
|
|
65
|
+
touches. Sessions are **revocable**: individually (`identity.sessions.revoke`),
|
|
66
66
|
per user (`identity.users.revokeSessions`), and automatically when a role
|
|
67
67
|
changes or a user is disabled. Set `cookieSecure: true` behind TLS in
|
|
68
68
|
production. CSRF protection lives *inside* the session provider: a cross-site
|
|
69
|
-
state-changing request
|
|
70
|
-
machinery), while GETs always pass
|
|
69
|
+
state-changing request doesn't authenticate (so it 401s with no token
|
|
70
|
+
machinery), while GETs always pass; the magic-link callback is a cross-site
|
|
71
71
|
top-level GET by nature.
|
|
72
72
|
|
|
73
73
|
## The `user` port
|
|
74
74
|
|
|
75
75
|
Host-bound triggers (`boundary.http.request`, `boundary.ws.*`) expose a `user`
|
|
76
|
-
output port
|
|
77
|
-
the caller's identity is an *edge you can see
|
|
76
|
+
output port (`{ id, provider, email?, name?, scopes, claims } | null`), so
|
|
77
|
+
the caller's identity is an *edge you can see*. Wire it
|
|
78
78
|
like any value:
|
|
79
79
|
|
|
80
80
|
```jsonc
|
|
@@ -86,7 +86,7 @@ same ground.
|
|
|
86
86
|
|
|
87
87
|
## Gating a route with `requireAuth`
|
|
88
88
|
|
|
89
|
-
Enforcement is the **trigger's** job, on its config
|
|
89
|
+
Enforcement is the **trigger's** job, on its config; core is untouched. Stamp
|
|
90
90
|
`requireAuth` on a `boundary.http.request` (or `boundary.ws.*`):
|
|
91
91
|
|
|
92
92
|
```jsonc
|
|
@@ -104,27 +104,29 @@ validator flags any route that exposes them without a gate.
|
|
|
104
104
|
|
|
105
105
|
## WebSockets
|
|
106
106
|
|
|
107
|
-
Auth happens **at upgrade
|
|
107
|
+
Auth happens **at upgrade**: the same cookie resolves the principal, the
|
|
108
108
|
trigger's `requireAuth` is enforced before the socket is accepted, and the
|
|
109
109
|
principal is fixed for the connection. Authenticated sockets auto-join two
|
|
110
110
|
rooms:
|
|
111
111
|
|
|
112
|
-
- `user:{id}
|
|
113
|
-
- `session:{sessionId}
|
|
112
|
+
- `user:{id}`: broadcast to all of a user's devices,
|
|
113
|
+
- `session:{sessionId}`: **revoking the session closes its sockets** (code 4001).
|
|
114
114
|
|
|
115
115
|
## Tokens & delivery
|
|
116
116
|
|
|
117
117
|
Magic links, invites, and the bootstrap link all print to the **server
|
|
118
|
-
console** until
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
118
|
+
console** until delivery is wired. The packaged way: install
|
|
119
|
+
`@pattern-js/mod-email` + a driver (Resend or SMTP) and create the `default`
|
|
120
|
+
account in admin → System → Email — links then send by email automatically.
|
|
121
|
+
Any other channel works through the `identity.deliverToken` hook
|
|
122
|
+
(`payload: { email, url, purpose, delivered }`): send the link by email/SMS/chat
|
|
123
|
+
and return `delivered: true`. No subscriber (or `delivered: false`) falls back
|
|
124
|
+
to the console, which **is** the zero-config dev login. Tokens are single-use, short-TTL (15 min; invites 7 days), sha256 at
|
|
123
125
|
rest, consumed via CAS so replays fail closed. Purposes: `login`, `invite`
|
|
124
126
|
(carries roles), `bootstrap`. The `/auth/token` callback turns a consumed token
|
|
125
|
-
into a user + session per the **signup policy
|
|
126
|
-
emails refused) or `open
|
|
127
|
-
page (the mod option only seeds it).
|
|
127
|
+
into a user + session per the **signup policy**: `invite` (default; unknown
|
|
128
|
+
emails refused) or `open`. This is a runtime setting toggled on the admin's
|
|
129
|
+
Settings page (the mod option only seeds it).
|
|
128
130
|
|
|
129
131
|
## Minimal config
|
|
130
132
|
|
|
@@ -142,7 +144,7 @@ export default identityMod({
|
|
|
142
144
|
});
|
|
143
145
|
```
|
|
144
146
|
|
|
145
|
-
`storage` is `node:sqlite` at `./.pattern-data/identity.db` by default
|
|
147
|
+
`storage` is `node:sqlite` at `./.pattern-data/identity.db` by default,
|
|
146
148
|
**gitignored**; never put identity data in `.pattern/`, which is committed
|
|
147
149
|
workflow storage.
|
|
148
150
|
|
|
@@ -157,6 +159,6 @@ workflow storage.
|
|
|
157
159
|
| `GET /auth/welcome` | Post-login landing when no home is advertised |
|
|
158
160
|
| `GET/POST /auth/bootstrap` | First-admin setup (the one-time link) |
|
|
159
161
|
|
|
160
|
-
All public by design
|
|
162
|
+
All public by design; the privileged surface is ops (`identity.users.*`,
|
|
161
163
|
`identity.sessions.*`, `identity.settings.*`), reached through their own
|
|
162
164
|
admin-scope-stamped routes under `/admin/api/identity/*`.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Render the first-admin setup form, reached via the one-time link printed to the
|
|
2
2
|
console on first boot when the user store is empty. The GET half of a two-step
|
|
3
|
-
flow (this renders, `identity.bootstrap.submit` creates)
|
|
4
|
-
|
|
5
|
-
redirects to login. You never trigger this
|
|
3
|
+
flow (this renders, `identity.bootstrap.submit` creates), a deliberate split so
|
|
4
|
+
creating the account requires an explicit POST. An HTTP-shaped op backing
|
|
5
|
+
`GET /auth/bootstrap`; a missing `t` redirects to login. You never trigger this
|
|
6
|
+
manually; boot prints the link.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Consume the bootstrap token, create the first user with the bootstrap roles
|
|
2
2
|
(`["admin"]` by default), and sign them in. The POST half of the first-boot
|
|
3
|
-
flow backing `POST /auth/bootstrap`; it accepts a `bootstrap`-purpose
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
flow backing `POST /auth/bootstrap`; it accepts only a `bootstrap`-purpose
|
|
4
|
+
token, so it works exactly once on an empty store. Re-renders the form with an
|
|
5
|
+
error on a bad email.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Render the login page, one section per login method registered by provider mods
|
|
2
|
-
(e.g. magic-link) in their `ready` hook
|
|
3
|
-
provider shows an empty page. An HTTP-shaped op: it emits
|
|
4
|
-
|
|
5
|
-
`error` query params drive the post-submit and error
|
|
2
|
+
(e.g. magic-link) in their `ready` hook; an identity install with no
|
|
3
|
+
provider shows an empty page. An HTTP-shaped op: it emits an HTML
|
|
4
|
+
`{ body, status }` response. Backs `GET /auth/login`; you rarely wire it by
|
|
5
|
+
hand. The `sent` and `error` query params drive the post-submit and error
|
|
6
|
+
states.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Revoke the current session (from `ctx.principal`'s `sessionId`) and clear the
|
|
2
|
-
cookie, then redirect to the login page. Backs `POST /auth/logout
|
|
3
|
-
the CSRF guard makes forged cross-site logouts inert. Anonymous callers
|
|
2
|
+
cookie, then redirect to the login page. Backs `POST /auth/logout`; being a
|
|
3
|
+
POST, the CSRF guard makes forged cross-site logouts inert. Anonymous callers
|
|
4
4
|
get the redirect (nothing to revoke).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
List sessions newest-first with user email and a derived status
|
|
2
2
|
(active/expired/revoked); pass `userId` to scope to one user, omit it for all.
|
|
3
|
-
Backs the admin Sessions screen and a user's session sub-list. Privileged
|
|
4
|
-
|
|
3
|
+
Backs the admin Sessions screen and a user's session sub-list. Privileged: gate
|
|
4
|
+
the trigger with the `admin` scope; revoke a row with
|
|
5
5
|
`identity.sessions.revoke`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Revoke one session by id
|
|
1
|
+
Revoke one session by id: it stops resolving on the next request and its live
|
|
2
2
|
WS sockets close (code 4001). Use it to kill a single device; for all of a
|
|
3
|
-
user's sessions use `identity.users.revokeSessions`. Privileged
|
|
3
|
+
user's sessions use `identity.users.revokeSessions`. Privileged: gate the
|
|
4
4
|
trigger with the `admin` scope.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Read the effective signup policy (`"open"` or `"invite"`)
|
|
2
|
-
|
|
3
|
-
toggled. Pairs with `identity.settings.set`; backs the admin Settings
|
|
4
|
-
Privileged
|
|
1
|
+
Read the effective signup policy (`"open"` or `"invite"`): the runtime setting
|
|
2
|
+
(the construction-time mod option only seeds it), so it reflects whatever was
|
|
3
|
+
last toggled. Pairs with `identity.settings.set`; backs the admin Settings
|
|
4
|
+
section. Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Switch the signup policy between `"open"` and `"invite"
|
|
1
|
+
Switch the signup policy between `"open"` and `"invite"`: persisted, so it
|
|
2
2
|
survives restarts and **overrides** the `signup` mod option (which only seeds
|
|
3
3
|
the initial value). This is the live switch that governs whether unknown emails
|
|
4
4
|
can self-register through `/auth/token` and `auth.magiclink.request`.
|
|
5
|
-
Privileged
|
|
5
|
+
Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
The security heart of login: consume a single-use `login`/`invite` token,
|
|
2
2
|
find-or-create the user per the **effective** signup policy, mint a session,
|
|
3
3
|
and redirect to `next` with the cookie set. An HTTP-shaped op backing
|
|
4
|
-
`GET /auth/token
|
|
4
|
+
`GET /auth/token`. Provider mods (magic-link, OIDC) issue tokens whose links
|
|
5
5
|
land here; they never mint sessions themselves. Bootstrap tokens are refused
|
|
6
|
-
here (they have their own flow), and a closed
|
|
7
|
-
the login page with an error
|
|
6
|
+
here (they have their own flow), and with a closed signup an unknown email
|
|
7
|
+
returns to the login page with an error.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
One user's profile shaped for the admin details page
|
|
1
|
+
One user's profile shaped for the admin details page: email, name, roles, the
|
|
2
2
|
**resolved scopes** (via the role→scopes map), disabled flag, created time, and
|
|
3
3
|
active-session count. Use this for a single user; `identity.users.list` for the
|
|
4
|
-
table. Privileged
|
|
4
|
+
table. Privileged: gate the trigger with the `admin` scope; throws if the user
|
|
5
5
|
isn't found.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Invite a user by email: mints a 7-day `invite` token (carrying the given
|
|
2
|
-
roles) and delivers it via the `identity.deliverToken` hook.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
roles) and delivers it via the `identity.deliverToken` hook. Reach for this
|
|
3
|
+
when signup is `invite` (the default) and you need to onboard someone who can't
|
|
4
|
+
sign themselves up. When no delivery channel is wired the result carries the
|
|
5
|
+
link as `copy` (a copyable field) for the admin to hand over manually; `roles`
|
|
6
|
+
accepts an array or a comma string. Privileged: gate the trigger with the
|
|
7
|
+
`admin` scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
List every user with roles flattened to a comma string for table rendering
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
["admin"] }` on the trigger (the validator flags it otherwise). For one
|
|
5
|
-
detail use `identity.users.get`.
|
|
1
|
+
List every user with roles flattened to a comma string for table rendering.
|
|
2
|
+
Backs the admin Users screen. Privileged and pure: scope checks are the
|
|
3
|
+
trigger's job, so a route or workflow wiring it MUST stamp `requireAuth: {
|
|
4
|
+
scopes: ["admin"] }` on the trigger (the validator flags it otherwise). For one
|
|
5
|
+
user's detail use `identity.users.get`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Mint a single-use sign-in link for an existing user and return it as `copy`
|
|
2
|
-
(a copyable field)
|
|
2
|
+
(a copyable field), for handing over manually when no email/SMS delivery is
|
|
3
3
|
wired. Use it to sign in an *existing* user; for someone new under invite-only
|
|
4
|
-
signup use `identity.users.invite
|
|
5
|
-
(re-enable first). Privileged
|
|
4
|
+
signup, use `identity.users.invite`. Throws if the user is disabled
|
|
5
|
+
(re-enable first). Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Revoke every session of one user
|
|
2
|
-
their live WS sockets (code 4001)
|
|
1
|
+
Revoke every session of one user: logs them out on all devices and closes
|
|
2
|
+
their live WS sockets (code 4001), without disabling the account, so they can
|
|
3
3
|
sign back in immediately. Use it for "sign out everywhere"; to also bar
|
|
4
|
-
re-entry use `identity.users.toggleDisabled`. Privileged
|
|
4
|
+
re-entry use `identity.users.toggleDisabled`. Privileged: gate the trigger
|
|
5
5
|
with the `admin` scope.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
Per-workflow run counts (runs, errors, avg ms, last run) for one user, read
|
|
2
2
|
from the admin's trace sink. Feature-detected: it returns an empty list when
|
|
3
|
-
`@pattern-js/mod-admin` isn't installed, and only
|
|
4
|
-
window** (a bounded ring buffer),
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`admin` scope.
|
|
3
|
+
`@pattern-js/mod-admin` isn't installed, and covers only the sink's **retained
|
|
4
|
+
window** (a bounded ring buffer), so the numbers reflect recent activity and
|
|
5
|
+
may omit older runs. Admin plumbing routes (`__`-prefixed, `*.route.admin.*`)
|
|
6
|
+
are filtered out. Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Replace a user's roles, then **revoke all their sessions
|
|
1
|
+
Replace a user's roles, then **revoke all their sessions**: a privilege change
|
|
2
2
|
forces a re-login, so don't reach for this on a hot path expecting the user to
|
|
3
3
|
stay signed in. New scopes take effect from the role→scopes map on their next
|
|
4
|
-
session. `roles` accepts an array or a comma string; privileged
|
|
4
|
+
session. `roles` accepts an array or a comma string; privileged: gate the
|
|
5
5
|
trigger with the `admin` scope.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Flip a user between disabled and enabled
|
|
1
|
+
Flip a user between disabled and enabled: disabling also revokes all their
|
|
2
2
|
sessions and closes their sockets, so it's the lock-out switch. It reads the
|
|
3
3
|
current state and inverts it (no explicit on/off arg), so two concurrent calls
|
|
4
|
-
cancel out. Privileged
|
|
4
|
+
cancel out. Privileged: gate the trigger with the `admin` scope. A disabled
|
|
5
5
|
user can't be issued a login link until re-enabled.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
The post-login landing of last resort
|
|
1
|
+
The post-login landing of last resort: shown only when no app advertised a
|
|
2
2
|
home under core's `AUTH_HOME_URL` (the admin registers its mount there). Renders
|
|
3
3
|
who-you-are plus a sign-out button; an HTTP-shaped op backing `GET
|
|
4
4
|
/auth/welcome` that redirects anonymous callers to the login page. If you have
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Report the calling principal
|
|
1
|
+
Report the calling principal: `{ kind: "anonymous" }` when unauthenticated,
|
|
2
2
|
else `{ kind: "user", id, email, name, roles, scopes, sessionId }`. Pure and
|
|
3
3
|
unprivileged (it only ever sees the caller's own principal), so wire it into
|
|
4
4
|
any graph that needs to know who's running; for a host trigger prefer the
|
package/package.json
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pattern-js/mod-identity",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-main.4a77893",
|
|
4
4
|
"description": "Users, sessions, roles and pluggable login methods for Pattern — the optional identity brick. Opaque revocable cookie sessions (CAS-backed, sqlite or in-memory), a single-use token kernel (login/invite/bootstrap), a login page, and admin screens.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pattern",
|
|
7
|
+
"mod",
|
|
8
|
+
"identity",
|
|
9
|
+
"auth",
|
|
10
|
+
"sessions",
|
|
11
|
+
"users"
|
|
12
|
+
],
|
|
5
13
|
"type": "module",
|
|
6
14
|
"license": "MIT",
|
|
7
15
|
"exports": {
|
|
@@ -19,13 +27,13 @@
|
|
|
19
27
|
],
|
|
20
28
|
"dependencies": {
|
|
21
29
|
"zod": "^4.0.0",
|
|
22
|
-
"@pattern-js/core": "0.
|
|
23
|
-
"@pattern-js/runtime-node": "0.
|
|
30
|
+
"@pattern-js/core": "0.3.0-main.4a77893",
|
|
31
|
+
"@pattern-js/runtime-node": "0.3.0-main.4a77893"
|
|
24
32
|
},
|
|
25
33
|
"devDependencies": {
|
|
26
34
|
"@types/node": "^22.0.0",
|
|
27
35
|
"typescript": "^5.6.0",
|
|
28
|
-
"@pattern-js/runtime-node": "0.
|
|
36
|
+
"@pattern-js/runtime-node": "0.3.0-main.4a77893"
|
|
29
37
|
},
|
|
30
38
|
"engines": {
|
|
31
39
|
"node": ">=22.5"
|