@pattern-js/mod-identity 0.3.0 → 0.4.0-main.c8eb671
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/admin-routes.d.ts +4 -0
- package/dist/admin-routes.d.ts.map +1 -1
- package/dist/admin-routes.js +16 -2
- package/dist/admin-routes.js.map +1 -1
- package/dist/api-token-provider.d.ts +18 -0
- package/dist/api-token-provider.d.ts.map +1 -0
- package/dist/api-token-provider.js +47 -0
- package/dist/api-token-provider.js.map +1 -0
- package/dist/deliver.d.ts +2 -0
- package/dist/deliver.d.ts.map +1 -1
- package/dist/deliver.js +55 -2
- package/dist/deliver.js.map +1 -1
- package/dist/frontend.d.ts.map +1 -1
- package/dist/frontend.js +101 -12
- package/dist/frontend.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +9 -2
- package/dist/mod.js.map +1 -1
- package/dist/ops.d.ts.map +1 -1
- package/dist/ops.js +149 -24
- package/dist/ops.js.map +1 -1
- package/dist/pages/html.d.ts.map +1 -1
- package/dist/pages/html.js +1 -0
- package/dist/pages/html.js.map +1 -1
- package/dist/pages/invited.d.ts +15 -0
- package/dist/pages/invited.d.ts.map +1 -0
- package/dist/pages/invited.js +21 -0
- package/dist/pages/invited.js.map +1 -0
- package/dist/service.d.ts +92 -3
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +187 -0
- package/dist/service.js.map +1 -1
- package/dist/store/memory.d.ts.map +1 -1
- package/dist/store/memory.js +0 -0
- package/dist/store/memory.js.map +1 -1
- package/dist/store/migrations.d.ts.map +1 -1
- package/dist/store/migrations.js +35 -0
- package/dist/store/migrations.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +121 -0
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/types.d.ts +76 -0
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/types.js.map +1 -1
- package/dist/workflows.d.ts.map +1 -1
- package/dist/workflows.js +1 -0
- package/dist/workflows.js.map +1 -1
- package/docs/index.md +66 -0
- package/docs/ops/identity.apiTokens.create.md +13 -0
- package/docs/ops/identity.apiTokens.list.md +4 -0
- package/docs/ops/identity.apiTokens.revoke.md +4 -0
- package/docs/ops/identity.invited.page.md +6 -0
- package/docs/ops/identity.invites.list.md +6 -0
- package/docs/ops/identity.invites.revoke.md +6 -0
- package/docs/ops/identity.users.delete.md +6 -0
- package/docs/ops/identity.users.invite.md +11 -7
- package/docs/ops/identity.users.setRoles.md +7 -5
- package/docs/ops/identity.users.toggleDisabled.md +6 -4
- package/package.json +4 -4
package/dist/store/types.d.ts
CHANGED
|
@@ -63,6 +63,31 @@ export interface TokenRow {
|
|
|
63
63
|
consumedAt: number | null;
|
|
64
64
|
version: number;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* An **invite** as a first-class record — what the admin sent, to whom, and
|
|
68
|
+
* what became of it. The single-use `TokenRow` remains the credential (its
|
|
69
|
+
* `data.inviteId` points back here); this row is the audit/status side:
|
|
70
|
+
* listable, revocable, and stamped on acceptance. Status is DERIVED, in
|
|
71
|
+
* precedence order: revoked → accepted → expired → pending.
|
|
72
|
+
*/
|
|
73
|
+
export interface InviteRow {
|
|
74
|
+
id: string;
|
|
75
|
+
email: string;
|
|
76
|
+
emailNorm: string;
|
|
77
|
+
/** Roles granted on acceptance. */
|
|
78
|
+
roles: string[];
|
|
79
|
+
/** Post-first-login destination (relative path), carried through the flow. */
|
|
80
|
+
next: string | null;
|
|
81
|
+
/** The admin who sent it (user id) — audit only, never authorization. */
|
|
82
|
+
invitedBy: string | null;
|
|
83
|
+
createdAt: number;
|
|
84
|
+
expiresAt: number;
|
|
85
|
+
acceptedAt: number | null;
|
|
86
|
+
/** The user the acceptance created (or linked). */
|
|
87
|
+
acceptedUserId: string | null;
|
|
88
|
+
revokedAt: number | null;
|
|
89
|
+
version: number;
|
|
90
|
+
}
|
|
66
91
|
/** Thrown when an insert hits the one-user-per-email constraint. */
|
|
67
92
|
export declare class UniqueViolationError extends Error {
|
|
68
93
|
constructor(field: string);
|
|
@@ -91,6 +116,12 @@ export interface UserStore {
|
|
|
91
116
|
limit?: number;
|
|
92
117
|
offset?: number;
|
|
93
118
|
}): Promise<UserRow[]>;
|
|
119
|
+
/**
|
|
120
|
+
* Hard-delete a user with their identity links and sessions (FK order:
|
|
121
|
+
* sessions → identities → user, one transaction). Returns false when absent.
|
|
122
|
+
* The caller (service) revokes sessions FIRST so live sockets close.
|
|
123
|
+
*/
|
|
124
|
+
deleteUser(id: string): Promise<boolean>;
|
|
94
125
|
}
|
|
95
126
|
export interface SessionStore {
|
|
96
127
|
create(row: Omit<SessionRow, "version">): Promise<SessionRow>;
|
|
@@ -120,6 +151,49 @@ export interface TokenStore {
|
|
|
120
151
|
consume(id: string, expectedVersion: number, at: number): Promise<TokenRow | null>;
|
|
121
152
|
deleteExpired(now: number): Promise<number>;
|
|
122
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* A scoped, revocable **API token** (`pat_…` bearer credentials for the
|
|
156
|
+
* control-plane API / MCP server). Unlike `TokenRow` these are MULTI-use:
|
|
157
|
+
* they stay valid until revoked or expired. Same hashing discipline —
|
|
158
|
+
* storage only ever sees the sha256.
|
|
159
|
+
*/
|
|
160
|
+
export interface ApiTokenRow {
|
|
161
|
+
id: string;
|
|
162
|
+
/** sha256 hex of the full raw bearer secret (including the `pat_` prefix). */
|
|
163
|
+
tokenHash: string;
|
|
164
|
+
/** Operator-chosen label ("CI deploys", "Claude Code"). */
|
|
165
|
+
name: string;
|
|
166
|
+
scopes: string[];
|
|
167
|
+
/** The admin who minted it — audit only, never authorization. */
|
|
168
|
+
userId: string | null;
|
|
169
|
+
createdAt: number;
|
|
170
|
+
/** null = never expires (revocation is the kill switch). */
|
|
171
|
+
expiresAt: number | null;
|
|
172
|
+
revokedAt: number | null;
|
|
173
|
+
lastUsedAt: number | null;
|
|
174
|
+
version: number;
|
|
175
|
+
}
|
|
176
|
+
export interface ApiTokenStore {
|
|
177
|
+
create(row: Omit<ApiTokenRow, "version">): Promise<ApiTokenRow>;
|
|
178
|
+
findByTokenHash(tokenHash: string): Promise<ApiTokenRow | null>;
|
|
179
|
+
findById(id: string): Promise<ApiTokenRow | null>;
|
|
180
|
+
/** All tokens, newest first (admin screen). */
|
|
181
|
+
list(): Promise<ApiTokenRow[]>;
|
|
182
|
+
/** CAS revoke: null on version mismatch (re-read & retry). Idempotent on an already-revoked row. */
|
|
183
|
+
revoke(id: string, expectedVersion: number, at: number): Promise<ApiTokenRow | null>;
|
|
184
|
+
/** Best-effort usage stamp — NOT CAS; concurrent stamps race harmlessly toward "recent". */
|
|
185
|
+
touchLastUsed(id: string, at: number): Promise<void>;
|
|
186
|
+
}
|
|
187
|
+
export interface InviteStore {
|
|
188
|
+
create(row: Omit<InviteRow, "version">): Promise<InviteRow>;
|
|
189
|
+
findById(id: string): Promise<InviteRow | null>;
|
|
190
|
+
/** All invites, newest first (admin screen). */
|
|
191
|
+
list(): Promise<InviteRow[]>;
|
|
192
|
+
/** CAS acceptance stamp — only a live (un-accepted, un-revoked) invite takes it. */
|
|
193
|
+
markAccepted(id: string, expectedVersion: number, at: number, userId: string): Promise<InviteRow | null>;
|
|
194
|
+
/** CAS revoke: null on version mismatch. Idempotent on an already-revoked row. */
|
|
195
|
+
revoke(id: string, expectedVersion: number, at: number): Promise<InviteRow | null>;
|
|
196
|
+
}
|
|
123
197
|
/** Small persisted key/value bag for runtime-mutable identity settings (signup policy…). */
|
|
124
198
|
export interface SettingsStore {
|
|
125
199
|
get(key: string): Promise<string | null>;
|
|
@@ -129,6 +203,8 @@ export interface IdentityStores {
|
|
|
129
203
|
users: UserStore;
|
|
130
204
|
sessions: SessionStore;
|
|
131
205
|
tokens: TokenStore;
|
|
206
|
+
apiTokens: ApiTokenStore;
|
|
207
|
+
invites: InviteStore;
|
|
132
208
|
settings: SettingsStore;
|
|
133
209
|
close(): Promise<void>;
|
|
134
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
package/dist/store/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmFH,oEAAoE;AACpE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,KAAa;QACvB,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
|
package/dist/workflows.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAsFjD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAsFjD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAY3D"}
|
package/dist/workflows.js
CHANGED
|
@@ -88,6 +88,7 @@ export function endpointWorkflows(mount) {
|
|
|
88
88
|
{ id: "identity.route.logout", method: "POST", path: `${mount}/logout`, op: "identity.logout", shape: "http" },
|
|
89
89
|
{ id: "identity.route.whoami", method: "GET", path: `${mount}/whoami`, op: "identity.whoami", shape: "json", out: "whoami" },
|
|
90
90
|
{ id: "identity.route.welcome", method: "GET", path: `${mount}/welcome`, op: "identity.welcome.page", shape: "http" },
|
|
91
|
+
{ id: "identity.route.invited", method: "GET", path: `${mount}/invited`, op: "identity.invited.page", shape: "http" },
|
|
91
92
|
{ id: "identity.route.bootstrap", method: "GET", path: `${mount}/bootstrap`, op: "identity.bootstrap.page", shape: "http" },
|
|
92
93
|
{ id: "identity.route.bootstrap.submit", method: "POST", path: `${mount}/bootstrap`, op: "identity.bootstrap.submit", shape: "http" },
|
|
93
94
|
];
|
package/dist/workflows.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
|
package/docs/index.md
CHANGED
|
@@ -128,6 +128,72 @@ into a user + session per the **signup policy**: `invite` (default; unknown
|
|
|
128
128
|
emails refused) or `open`. This is a runtime setting toggled on the admin's
|
|
129
129
|
Settings page (the mod option only seeds it).
|
|
130
130
|
|
|
131
|
+
**Emailed links are absolute.** Set `PATTERN_PUBLIC_URL` (e.g.
|
|
132
|
+
`https://app.example.com`) and every delivered link is built on that canonical
|
|
133
|
+
origin — it beats the request-derived origin on purpose, because behind a
|
|
134
|
+
proxy or tunnel the Host header is whatever the hop put there. Unset (dev),
|
|
135
|
+
the request's own origin is used, so localhost links still work with zero
|
|
136
|
+
config.
|
|
137
|
+
|
|
138
|
+
## Invites (0.4)
|
|
139
|
+
|
|
140
|
+
An invite is a **record**, not just a token: admin → **Access → Invites**
|
|
141
|
+
sends one (email, roles, and an optional **next path** — where the invitee's
|
|
142
|
+
first login lands, e.g. `/admin` or `/chat`) and lists every invite sent with
|
|
143
|
+
its derived status: `pending` → `accepted` (or `expired` / `revoked`). Revoke
|
|
144
|
+
a pending invite and its link dies immediately — the callback checks the
|
|
145
|
+
record before creating any account.
|
|
146
|
+
|
|
147
|
+
Accepting an invite deliberately does **not** sign the user in. The link
|
|
148
|
+
creates the account, stamps the record, and lands on `/auth/invited` — a small
|
|
149
|
+
page that says what just happened and hands over to the login screen with the
|
|
150
|
+
invite's next path riding along. Acceptance and the first sign-in stay two
|
|
151
|
+
distinct acts, so the invitee consciously picks (and remembers) a sign-in
|
|
152
|
+
method.
|
|
153
|
+
|
|
154
|
+
## Administering users (0.4)
|
|
155
|
+
|
|
156
|
+
Access → **Users** is the control room: per row — details, a minted sign-in
|
|
157
|
+
link, **disable / enable** (reversible lock-out; revokes sessions), **log out
|
|
158
|
+
everywhere**, and **delete** (removes the user, their identity links and
|
|
159
|
+
session rows; invites and API tokens keep the id as audit trail). Roles are
|
|
160
|
+
edited on the user's **details page** (the "Set roles" form replaces the whole
|
|
161
|
+
set and ends their sessions). Two guards run everywhere they matter: you can't
|
|
162
|
+
disable or delete **yourself**, and the **last active admin** can't be
|
|
163
|
+
demoted, disabled or deleted — an app always keeps someone who can administer
|
|
164
|
+
it.
|
|
165
|
+
|
|
166
|
+
## API tokens (0.4)
|
|
167
|
+
|
|
168
|
+
Sessions authenticate humans in browsers; **API tokens** authenticate
|
|
169
|
+
programs — MCP clients on `/mcp/pattern`, CI deploys, scripts against the
|
|
170
|
+
admin API. Mint them in admin → **Access → API tokens**: the raw `pat_…`
|
|
171
|
+
secret is shown **exactly once** (only its sha256 is stored), and a bearer
|
|
172
|
+
header authenticates it on any route:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Authorization: Bearer pat_…
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Tokens are multi-use until revoked (or until their optional expiry), carry
|
|
179
|
+
their own **scopes**, and authenticate as themselves — audit trails name the
|
|
180
|
+
credential that acted, not the admin who minted it.
|
|
181
|
+
|
|
182
|
+
| Scope | Grants |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| `workflows:read` | read workflows, versions, ops, docs, templates, fixtures |
|
|
185
|
+
| `workflows:write` | save drafts, import, write fixtures |
|
|
186
|
+
| `runs:read` | read runs, traces, metrics |
|
|
187
|
+
| `runs:write` | start, cancel, pause, resume runs |
|
|
188
|
+
| `deploy` | deploy, enable/disable, delete — what RUNS |
|
|
189
|
+
| `admin` | root — satisfies every requirement (sessions carry this via roles) |
|
|
190
|
+
|
|
191
|
+
The split that matters: an *authoring* token (`workflows:read` +
|
|
192
|
+
`workflows:write`) can draft all day and never change what runs in
|
|
193
|
+
production; `deploy` is its own decision. The admin ops re-check these scopes
|
|
194
|
+
in-op, so the enforcement holds even when a tool workflow calls them on your
|
|
195
|
+
behalf.
|
|
196
|
+
|
|
131
197
|
## Minimal config
|
|
132
198
|
|
|
133
199
|
Defaults work from the bare `"@pattern-js/mod-identity"` config entry. To
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Mint a scoped, revocable API token — the bearer credential for the
|
|
2
|
+
control-plane surface (the Pattern MCP server, CI deploys, admin API
|
|
3
|
+
automation). Returns the raw `pat_…` secret **exactly once**; only its hash is
|
|
4
|
+
stored, so copy it from the result immediately.
|
|
5
|
+
|
|
6
|
+
Scopes are the 0.4.0 taxonomy: `workflows:read`, `workflows:write`,
|
|
7
|
+
`runs:read`, `runs:write`, `deploy`, and `admin` (root — satisfies every
|
|
8
|
+
requirement, use sparingly). The author-vs-deploy split is the point: a token
|
|
9
|
+
that can draft workflows (`workflows:write`) still can't touch what runs in
|
|
10
|
+
production without `deploy`.
|
|
11
|
+
|
|
12
|
+
`ttlDays` is optional — empty means the token lives until revoked. Privileged:
|
|
13
|
+
gate the trigger with the `admin` scope.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
List API tokens, newest first — name, scopes, status (active / revoked /
|
|
2
|
+
expired), created, last-used and expiry. Secrets are never stored, so nothing
|
|
3
|
+
secret can leak from this list: storage only ever holds the sha256 of each
|
|
4
|
+
`pat_…` bearer. Privileged: gate the trigger with the `admin` scope.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
Revoke an API token by id: it stops authenticating on the next request.
|
|
2
|
+
Idempotent — revoking an already-revoked token succeeds quietly. This is the
|
|
3
|
+
kill switch for a leaked or retired credential; there is no un-revoke (mint a
|
|
4
|
+
fresh one instead). Privileged: gate the trigger with the `admin` scope.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
The invite-accepted interstitial (`GET {mount}/invited`): renders the "your
|
|
2
|
+
account is ready — sign in for the first time" page the token callback lands
|
|
3
|
+
invite acceptances on. Acceptance creates the account but deliberately mints
|
|
4
|
+
no session; this page explains that and hands over to the login screen with
|
|
5
|
+
the invite's `next` path riding along (sanitized — relative paths only), so
|
|
6
|
+
the first login lands where the inviting admin intended.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
List every sent invite, newest first, with its derived status — `pending`,
|
|
2
|
+
`accepted` (with when and by which resulting user), `expired`, or `revoked` —
|
|
3
|
+
plus the roles it grants, the `next` path its first login lands on, and who
|
|
4
|
+
sent it. This is the read behind the admin's "Sent invites" table; wire it in
|
|
5
|
+
a workflow to build onboarding dashboards or nudge-reminder automations.
|
|
6
|
+
Privileged: gate the trigger with the `admin` scope.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
Revoke a pending invite: its emailed link stops working immediately — the
|
|
2
|
+
token callback checks the invite record before creating any account, so a
|
|
3
|
+
consumed-but-revoked link dead-ends on `error=invite-revoked`. Idempotent on
|
|
4
|
+
an already-revoked invite; refused once accepted (the account exists — disable
|
|
5
|
+
or delete the user instead). Privileged: gate the trigger with the `admin`
|
|
6
|
+
scope.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
Delete a user for good: their sessions are revoked (live sockets close), then
|
|
2
|
+
the user row, identity links and session rows are removed — this is the PII
|
|
3
|
+
eraser, not a soft flag (that's `identity.users.toggleDisabled`). Guarded
|
|
4
|
+
twice: you can't delete your own account, and never the last active admin.
|
|
5
|
+
Audit trails survive on purpose — invites they sent and API tokens they minted
|
|
6
|
+
keep the id. Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
Invite a user by email:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
`
|
|
1
|
+
Invite a user by email: records the invite (listable via
|
|
2
|
+
`identity.invites.list`, revocable while pending), mints its 7-day token and
|
|
3
|
+
delivers the link through the `identity.deliverToken` hook. Reach for this
|
|
4
|
+
when signup is `invite` (the default) and you need to onboard someone who
|
|
5
|
+
can't sign themselves up. `roles` (array or comma string) are granted on
|
|
6
|
+
acceptance; `next` sets where their FIRST login lands (e.g. `/admin`,
|
|
7
|
+
`/chat`). The emailed link is absolute: `PATTERN_PUBLIC_URL` when set (the
|
|
8
|
+
canonical origin — proxies can't lie about it), else the origin of the `url`
|
|
9
|
+
input (the admin route wires the request URL in). When no delivery channel is
|
|
10
|
+
wired the result carries the link as `copy` for the admin to hand over
|
|
11
|
+
manually. Privileged: gate the trigger with the `admin` scope.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
Replace a user's roles, then **revoke all their
|
|
2
|
-
forces a re-login, so don't reach for this on a
|
|
3
|
-
stay signed in. New scopes take effect from the
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
Replace a user's roles (the WHOLE set, not a patch), then **revoke all their
|
|
2
|
+
sessions**: a privilege change forces a re-login, so don't reach for this on a
|
|
3
|
+
hot path expecting the user to stay signed in. New scopes take effect from the
|
|
4
|
+
role→scopes map on their next session. Refused when it would demote the last
|
|
5
|
+
active admin — an app must always keep someone who can administer it. `roles`
|
|
6
|
+
accepts an array or a comma string; privileged: gate the trigger with the
|
|
7
|
+
`admin` scope. The admin UI edits this from the user's details page.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
Flip a user between disabled and enabled: disabling also revokes all their
|
|
2
|
-
sessions and closes their sockets, so it's the lock-out switch
|
|
3
|
-
current state and inverts it (no
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
sessions and closes their sockets, so it's the lock-out switch — reversible,
|
|
3
|
+
unlike `identity.users.delete`. It reads the current state and inverts it (no
|
|
4
|
+
explicit on/off arg), so two concurrent calls cancel out. Guarded: you can't
|
|
5
|
+
disable your own account, and never the last active admin. Privileged: gate
|
|
6
|
+
the trigger with the `admin` scope. A disabled user can't be issued a login
|
|
7
|
+
link until re-enabled.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pattern-js/mod-identity",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-main.c8eb671",
|
|
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
5
|
"keywords": [
|
|
6
6
|
"pattern",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"zod": "^4.0.0",
|
|
30
|
-
"@pattern-js/core": "0.
|
|
31
|
-
"@pattern-js/runtime-node": "0.
|
|
30
|
+
"@pattern-js/core": "0.4.0-main.c8eb671",
|
|
31
|
+
"@pattern-js/runtime-node": "0.4.0-main.c8eb671"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^22.0.0",
|
|
35
35
|
"typescript": "^5.6.0",
|
|
36
|
-
"@pattern-js/runtime-node": "0.
|
|
36
|
+
"@pattern-js/runtime-node": "0.4.0-main.c8eb671"
|
|
37
37
|
},
|
|
38
38
|
"engines": {
|
|
39
39
|
"node": ">=22.5"
|