@adminiumjs/meta 0.2.2-rc.0 → 0.2.2
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/ids.d.ts +4 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +7 -0
- package/dist/ids.js.map +1 -1
- package/dist/migrations/0014_public_surface.d.ts +40 -0
- package/dist/migrations/0014_public_surface.d.ts.map +1 -0
- package/dist/migrations/0014_public_surface.js +186 -0
- package/dist/migrations/0014_public_surface.js.map +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +2 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/relocate.d.ts +1 -1
- package/dist/relocate.js +1 -1
- package/dist/repos/index.d.ts +1 -0
- package/dist/repos/index.d.ts.map +1 -1
- package/dist/repos/index.js +1 -0
- package/dist/repos/index.js.map +1 -1
- package/dist/repos/public-api.d.ts +116 -0
- package/dist/repos/public-api.d.ts.map +1 -0
- package/dist/repos/public-api.js +249 -0
- package/dist/repos/public-api.js.map +1 -0
- package/dist/schema/settings-registry.d.ts +39 -0
- package/dist/schema/settings-registry.d.ts.map +1 -1
- package/dist/schema/settings-registry.js +53 -0
- package/dist/schema/settings-registry.js.map +1 -1
- package/dist/schema/tables.d.ts +89 -1
- package/dist/schema/tables.d.ts.map +1 -1
- package/dist/schema/tables.js +4 -0
- package/dist/schema/tables.js.map +1 -1
- package/package.json +1 -1
package/dist/ids.d.ts
CHANGED
|
@@ -46,6 +46,10 @@ export declare const ID_PREFIXES: {
|
|
|
46
46
|
readonly mft: "adminium_manifests";
|
|
47
47
|
readonly loc: "adminium_locales";
|
|
48
48
|
readonly trn: "adminium_translations";
|
|
49
|
+
readonly pbk: "adminium_public_keys";
|
|
50
|
+
readonly psc: "adminium_public_scopes";
|
|
51
|
+
readonly pss: "adminium_public_sessions";
|
|
52
|
+
readonly pch: "adminium_public_challenges";
|
|
49
53
|
};
|
|
50
54
|
export type IdPrefix = keyof typeof ID_PREFIXES;
|
|
51
55
|
/** Maximum column width every id must fit (07-meta-store.md §2.1). */
|
package/dist/ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAQH,QAAA,MAAM,QAAQ,QAAsB,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAQH,QAAA,MAAM,QAAQ,QAAsB,CAAC;AAErC;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCd,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,WAAW,CAAC;AAOhD,sEAAsE;AACtE,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,SAAoB;CAClC;AAiDD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAc9C;AAED,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,MAAM,EAAE,QAAQ,CAAC;IACjB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAY5C;AAED,uFAAuF;AACvF,wBAAgB,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAQ5D;AAED,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED,2CAA2C;AAC3C,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAC"}
|
package/dist/ids.js
CHANGED
|
@@ -52,6 +52,13 @@ export const ID_PREFIXES = {
|
|
|
52
52
|
mft: 'adminium_manifests',
|
|
53
53
|
loc: 'adminium_locales',
|
|
54
54
|
trn: 'adminium_translations',
|
|
55
|
+
// 28-public-surface.md §3.3 — the public surface. `pbk` is deliberately not
|
|
56
|
+
// `key`: a publishable key is never an RbacPrincipal (28 D3) and sharing an
|
|
57
|
+
// id space with `adminium_api_keys` would blur exactly that boundary.
|
|
58
|
+
pbk: 'adminium_public_keys',
|
|
59
|
+
psc: 'adminium_public_scopes',
|
|
60
|
+
pss: 'adminium_public_sessions',
|
|
61
|
+
pch: 'adminium_public_challenges',
|
|
55
62
|
};
|
|
56
63
|
const PREFIX_SET = new Set(Object.keys(ID_PREFIXES));
|
|
57
64
|
/** `<prefix>_<26 Crockford chars>` — Crockford charset excludes I, L, O, U. */
|
package/dist/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,iDAAiD;AACjD,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACpD,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,gBAAgB;IACrB,IAAI,EAAE,mBAAmB;IACzB,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,2BAA2B;IACjC,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,2BAA2B;IACjC,GAAG,EAAE,2BAA2B;IAChC,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,wBAAwB;IAC7B,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,0BAA0B;IAChC,GAAG,EAAE,4BAA4B;IACjC,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,kBAAkB;IACvB,IAAI,EAAE,gBAAgB;IACtB,GAAG,EAAE,0BAA0B;IAC/B,EAAE,EAAE,mBAAmB;IACvB,GAAG,EAAE,6BAA6B;IAClC,IAAI,EAAE,wBAAwB;IAC9B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wave 0014 — the public surface (28-public-surface.md §3).
|
|
3
|
+
*
|
|
4
|
+
* Four tables behind the scoped, off-by-default `/api/v1/public` namespace:
|
|
5
|
+
* the browser-safe key kind, the scope document that says what a key may reach,
|
|
6
|
+
* the end-customer session a `claim` mints, and the one-time challenge the
|
|
7
|
+
* `email-code` claim tier needs.
|
|
8
|
+
*
|
|
9
|
+
* WHY THESE ARE NOT `adminium_api_keys` ROWS WITH A `kind` COLUMN (28 §3.3).
|
|
10
|
+
* Two properties diverge and both are load-bearing:
|
|
11
|
+
*
|
|
12
|
+
* 1. The secret is RE-READABLE by an admin. `adminium_api_keys` reveals once
|
|
13
|
+
* and never again, which is right for a server-side credential a human
|
|
14
|
+
* copies into a deployment. An `adm_pub_` secret lives in a public bundle
|
|
15
|
+
* and has to survive a rebuild months later, so the row keeps a reversible
|
|
16
|
+
* copy alongside the hash.
|
|
17
|
+
* 2. A publishable key is NEVER an `RbacPrincipal` (28 D3). `parseBearerApiKey`
|
|
18
|
+
* gates on the `adm_sk_` prefix, so a token from this table cannot resolve
|
|
19
|
+
* through the rbac plugin at all — which is what makes it inert on every
|
|
20
|
+
* other route BY CONSTRUCTION rather than by an allow-list somebody has to
|
|
21
|
+
* maintain. Sharing a table would invite exactly the `kind`-check-per-route
|
|
22
|
+
* that property exists to avoid.
|
|
23
|
+
*
|
|
24
|
+
* NO SETTINGS TABLE HERE, deliberately (28 D20). Tenant configuration is
|
|
25
|
+
* hybrid: the only key Adminium must own is the `timezone` it needs to
|
|
26
|
+
* interpret its own `timestamptz` values, and that rides on the SCOPE document
|
|
27
|
+
* below — already per-connection, already operator-authored, already served on
|
|
28
|
+
* `/public/config`. A global settings key would be one line cheaper and wrong
|
|
29
|
+
* the moment an instance holds two connections for businesses in different
|
|
30
|
+
* zones. Everything else an app needs (tax rates, tip presets, opening hours)
|
|
31
|
+
* stays in the app's own tables, where the generated dashboard edits it for
|
|
32
|
+
* free.
|
|
33
|
+
*
|
|
34
|
+
* `0013_connection_last_error_hint` is the latest applied migration; never edit
|
|
35
|
+
* a shipped one (the one-time checksum exception in `index.ts` was pre-release).
|
|
36
|
+
*/
|
|
37
|
+
import type { Kysely } from 'kysely';
|
|
38
|
+
import type { ColumnHelpers } from '../columns.js';
|
|
39
|
+
export declare function up(db: Kysely<unknown>, c: ColumnHelpers): Promise<void>;
|
|
40
|
+
//# sourceMappingURL=0014_public_surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0014_public_surface.d.ts","sourceRoot":"","sources":["../../src/migrations/0014_public_surface.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6L7E"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
/**
|
|
3
|
+
* Wave 0014 — the public surface (28-public-surface.md §3).
|
|
4
|
+
*
|
|
5
|
+
* Four tables behind the scoped, off-by-default `/api/v1/public` namespace:
|
|
6
|
+
* the browser-safe key kind, the scope document that says what a key may reach,
|
|
7
|
+
* the end-customer session a `claim` mints, and the one-time challenge the
|
|
8
|
+
* `email-code` claim tier needs.
|
|
9
|
+
*
|
|
10
|
+
* WHY THESE ARE NOT `adminium_api_keys` ROWS WITH A `kind` COLUMN (28 §3.3).
|
|
11
|
+
* Two properties diverge and both are load-bearing:
|
|
12
|
+
*
|
|
13
|
+
* 1. The secret is RE-READABLE by an admin. `adminium_api_keys` reveals once
|
|
14
|
+
* and never again, which is right for a server-side credential a human
|
|
15
|
+
* copies into a deployment. An `adm_pub_` secret lives in a public bundle
|
|
16
|
+
* and has to survive a rebuild months later, so the row keeps a reversible
|
|
17
|
+
* copy alongside the hash.
|
|
18
|
+
* 2. A publishable key is NEVER an `RbacPrincipal` (28 D3). `parseBearerApiKey`
|
|
19
|
+
* gates on the `adm_sk_` prefix, so a token from this table cannot resolve
|
|
20
|
+
* through the rbac plugin at all — which is what makes it inert on every
|
|
21
|
+
* other route BY CONSTRUCTION rather than by an allow-list somebody has to
|
|
22
|
+
* maintain. Sharing a table would invite exactly the `kind`-check-per-route
|
|
23
|
+
* that property exists to avoid.
|
|
24
|
+
*
|
|
25
|
+
* NO SETTINGS TABLE HERE, deliberately (28 D20). Tenant configuration is
|
|
26
|
+
* hybrid: the only key Adminium must own is the `timezone` it needs to
|
|
27
|
+
* interpret its own `timestamptz` values, and that rides on the SCOPE document
|
|
28
|
+
* below — already per-connection, already operator-authored, already served on
|
|
29
|
+
* `/public/config`. A global settings key would be one line cheaper and wrong
|
|
30
|
+
* the moment an instance holds two connections for businesses in different
|
|
31
|
+
* zones. Everything else an app needs (tax rates, tip presets, opening hours)
|
|
32
|
+
* stays in the app's own tables, where the generated dashboard edits it for
|
|
33
|
+
* free.
|
|
34
|
+
*
|
|
35
|
+
* `0013_connection_last_error_hint` is the latest applied migration; never edit
|
|
36
|
+
* a shipped one (the one-time checksum exception in `index.ts` was pre-release).
|
|
37
|
+
*/
|
|
38
|
+
import { metaTable } from '../prefix.js';
|
|
39
|
+
export async function up(db, c) {
|
|
40
|
+
/*
|
|
41
|
+
* The scope document. One row per (connection, side) the operator publishes.
|
|
42
|
+
*
|
|
43
|
+
* `document` is the compiled-from JSON: resources, their logical refs, the
|
|
44
|
+
* `expose` column allow-list, `filterable`/`searchable`/`orderable`, the
|
|
45
|
+
* mandatory `where` predicate, and the claim strategy. It is validated by
|
|
46
|
+
* `compileScope` on every write and on every boot — never trusted from disk.
|
|
47
|
+
*
|
|
48
|
+
* `timezone` is a COLUMN rather than a field inside `document` because it is
|
|
49
|
+
* the one datum the SERIALIZER needs, not the caller: a reader has to reach it
|
|
50
|
+
* without parsing and validating the whole document first.
|
|
51
|
+
*
|
|
52
|
+
* `proposed_from_manifest` records whether this row was seeded from a
|
|
53
|
+
* manifest's `publicApi.propose` block (O2 option b) or authored from scratch
|
|
54
|
+
* in Studio (option c). It exists so widening past a publisher's proposal can
|
|
55
|
+
* be audited, and it is nullable because option (c) is unblocked today and
|
|
56
|
+
* option (b) is not yet ruled.
|
|
57
|
+
*/
|
|
58
|
+
await db.schema
|
|
59
|
+
.createTable(metaTable('public_scopes'))
|
|
60
|
+
.ifNotExists()
|
|
61
|
+
.addColumn('id', c.id, (col) => col.primaryKey())
|
|
62
|
+
.addColumn('connection_id', c.id, (col) => col.notNull())
|
|
63
|
+
.addColumn('side', c.str(16), (col) => col.notNull())
|
|
64
|
+
.addColumn('name', c.str(80), (col) => col.notNull())
|
|
65
|
+
/** IANA zone, e.g. `Europe/London`. Required — see 28 D20. */
|
|
66
|
+
.addColumn('timezone', c.str(64), (col) => col.notNull())
|
|
67
|
+
.addColumn('document', c.json, (col) => col.notNull())
|
|
68
|
+
.addColumn('proposed_from_manifest', c.str(80))
|
|
69
|
+
.addColumn('created_by', c.id)
|
|
70
|
+
.addColumn('created_at', c.ts, (col) => col.notNull())
|
|
71
|
+
.addColumn('updated_at', c.ts, (col) => col.notNull())
|
|
72
|
+
.addForeignKeyConstraint('fk_adminium_public_scopes_connection', ['connection_id'], metaTable('connections'), ['id'], (cb) => cb.onDelete('cascade'))
|
|
73
|
+
.addForeignKeyConstraint('fk_adminium_public_scopes_created_by', ['created_by'], metaTable('users'), ['id'], (cb) => cb.onDelete('set null'))
|
|
74
|
+
.execute();
|
|
75
|
+
await db.schema
|
|
76
|
+
.createIndex('ix_adminium_public_scopes_connection')
|
|
77
|
+
.on(metaTable('public_scopes'))
|
|
78
|
+
.columns(['connection_id'])
|
|
79
|
+
.execute();
|
|
80
|
+
/*
|
|
81
|
+
* The publishable key.
|
|
82
|
+
*
|
|
83
|
+
* `token_hash` is what a request is verified against. `token_encrypted` is the
|
|
84
|
+
* reversible copy that makes the secret re-readable (see the header) — it uses
|
|
85
|
+
* the same `dsnCryptoFromSecret` envelope as connection DSNs, so it is
|
|
86
|
+
* unreadable without `ADMINIUM_SECRET` and it never leaves the server except
|
|
87
|
+
* through an authenticated reveal.
|
|
88
|
+
*
|
|
89
|
+
* `origins` is a JSON array narrowing the instance-wide
|
|
90
|
+
* `ADMINIUM_PUBLIC_API_ORIGINS` allow-list for this one key. Empty array means
|
|
91
|
+
* "no narrowing" — it does NOT mean "any origin", because the env var is
|
|
92
|
+
* always the outer bound.
|
|
93
|
+
*
|
|
94
|
+
* `scope_id` is `restrict` on delete, not `cascade`: deleting a scope out from
|
|
95
|
+
* under a live key would silently turn a working public surface into a 500,
|
|
96
|
+
* so the operator has to revoke the key first and see what they are breaking.
|
|
97
|
+
*/
|
|
98
|
+
await db.schema
|
|
99
|
+
.createTable(metaTable('public_keys'))
|
|
100
|
+
.ifNotExists()
|
|
101
|
+
.addColumn('id', c.id, (col) => col.primaryKey())
|
|
102
|
+
.addColumn('name', c.str(80), (col) => col.notNull())
|
|
103
|
+
/** Display fragment, e.g. `adm_pub_4f2a91cd`. */
|
|
104
|
+
.addColumn('prefix', c.str(32), (col) => col.notNull())
|
|
105
|
+
.addColumn('token_hash', c.str(128), (col) => col.notNull())
|
|
106
|
+
.addColumn('token_encrypted', c.text, (col) => col.notNull())
|
|
107
|
+
.addColumn('scope_id', c.id, (col) => col.notNull())
|
|
108
|
+
.addColumn('side', c.str(16), (col) => col.notNull())
|
|
109
|
+
.addColumn('origins', c.json, (col) => col.notNull())
|
|
110
|
+
.addColumn('expires_at', c.ts)
|
|
111
|
+
.addColumn('revoked_at', c.ts)
|
|
112
|
+
.addColumn('last_used_at', c.ts)
|
|
113
|
+
.addColumn('created_by', c.id)
|
|
114
|
+
.addColumn('created_at', c.ts, (col) => col.notNull())
|
|
115
|
+
.addColumn('updated_at', c.ts, (col) => col.notNull())
|
|
116
|
+
.addForeignKeyConstraint('fk_adminium_public_keys_scope', ['scope_id'], metaTable('public_scopes'), ['id'], (cb) => cb.onDelete('restrict'))
|
|
117
|
+
.addForeignKeyConstraint('fk_adminium_public_keys_created_by', ['created_by'], metaTable('users'), ['id'], (cb) => cb.onDelete('set null'))
|
|
118
|
+
.execute();
|
|
119
|
+
/* Lookup is by prefix on every public request — the hot path of this wave. */
|
|
120
|
+
await db.schema
|
|
121
|
+
.createIndex('ix_adminium_public_keys_prefix')
|
|
122
|
+
.on(metaTable('public_keys'))
|
|
123
|
+
.columns(['prefix'])
|
|
124
|
+
.execute();
|
|
125
|
+
/*
|
|
126
|
+
* The end-customer session minted by `POST /public/claim` (28 §3.4).
|
|
127
|
+
*
|
|
128
|
+
* `grants` is the resolved claim — the mandatory predicate later requests are
|
|
129
|
+
* filtered by, e.g. "patient_id = 41". It is stored RESOLVED rather than
|
|
130
|
+
* re-derived per request so that editing a scope cannot retroactively widen a
|
|
131
|
+
* session that is already in someone's browser.
|
|
132
|
+
*
|
|
133
|
+
* There is no `user_id`. An end customer is deliberately NOT an
|
|
134
|
+
* `adminium_users` row (28 §3.4) — Adminium grows no second identity system,
|
|
135
|
+
* and this table is the whole of what a claimed customer is.
|
|
136
|
+
*/
|
|
137
|
+
await db.schema
|
|
138
|
+
.createTable(metaTable('public_sessions'))
|
|
139
|
+
.ifNotExists()
|
|
140
|
+
.addColumn('id', c.id, (col) => col.primaryKey())
|
|
141
|
+
.addColumn('key_id', c.id, (col) => col.notNull())
|
|
142
|
+
.addColumn('token_hash', c.str(128), (col) => col.notNull())
|
|
143
|
+
.addColumn('grants', c.json, (col) => col.notNull())
|
|
144
|
+
.addColumn('expires_at', c.ts, (col) => col.notNull())
|
|
145
|
+
.addColumn('created_at', c.ts, (col) => col.notNull())
|
|
146
|
+
.addColumn('last_seen_at', c.ts)
|
|
147
|
+
.addForeignKeyConstraint('fk_adminium_public_sessions_key', ['key_id'], metaTable('public_keys'), ['id'], (cb) => cb.onDelete('cascade'))
|
|
148
|
+
.execute();
|
|
149
|
+
await db.schema
|
|
150
|
+
.createIndex('ix_adminium_public_sessions_token_hash')
|
|
151
|
+
.on(metaTable('public_sessions'))
|
|
152
|
+
.columns(['token_hash'])
|
|
153
|
+
.execute();
|
|
154
|
+
/*
|
|
155
|
+
* One-time challenges for the `email-code` claim tier (28 D11/D17).
|
|
156
|
+
*
|
|
157
|
+
* `attempts` is on the row rather than in a counter elsewhere because the
|
|
158
|
+
* containment property this tier is bought for — a low-entropy code is only
|
|
159
|
+
* safe if guesses are bounded — has to survive a process restart, and the
|
|
160
|
+
* rate limiter is an in-process `Map` that does not.
|
|
161
|
+
*
|
|
162
|
+
* `destination_hash` rather than the address itself: a challenge table is a
|
|
163
|
+
* list of customer email addresses otherwise, which is a needless standing
|
|
164
|
+
* disclosure for a row whose whole life is five minutes.
|
|
165
|
+
*/
|
|
166
|
+
await db.schema
|
|
167
|
+
.createTable(metaTable('public_challenges'))
|
|
168
|
+
.ifNotExists()
|
|
169
|
+
.addColumn('id', c.id, (col) => col.primaryKey())
|
|
170
|
+
.addColumn('key_id', c.id, (col) => col.notNull())
|
|
171
|
+
.addColumn('ref', c.str(64), (col) => col.notNull())
|
|
172
|
+
.addColumn('destination_hash', c.str(128), (col) => col.notNull())
|
|
173
|
+
.addColumn('code_hash', c.str(128), (col) => col.notNull())
|
|
174
|
+
.addColumn('attempts', c.int, (col) => col.notNull().defaultTo(0))
|
|
175
|
+
.addColumn('consumed_at', c.ts)
|
|
176
|
+
.addColumn('expires_at', c.ts, (col) => col.notNull())
|
|
177
|
+
.addColumn('created_at', c.ts, (col) => col.notNull())
|
|
178
|
+
.addForeignKeyConstraint('fk_adminium_public_challenges_key', ['key_id'], metaTable('public_keys'), ['id'], (cb) => cb.onDelete('cascade'))
|
|
179
|
+
.execute();
|
|
180
|
+
await db.schema
|
|
181
|
+
.createIndex('ix_adminium_public_challenges_key_ref')
|
|
182
|
+
.on(metaTable('public_challenges'))
|
|
183
|
+
.columns(['key_id', 'ref'])
|
|
184
|
+
.execute();
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=0014_public_surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0014_public_surface.js","sourceRoot":"","sources":["../../src/migrations/0014_public_surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,aAAa,EAelD,CAAC"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -32,6 +32,7 @@ import { up as up0010 } from './0010_llm_prompt_version_width.js';
|
|
|
32
32
|
import { up as up0011 } from './0011_i18n_runtime.js';
|
|
33
33
|
import { up as up0012 } from './0012_locale_width.js';
|
|
34
34
|
import { up as up0013 } from './0013_connection_last_error_hint.js';
|
|
35
|
+
import { up as up0014 } from './0014_public_surface.js';
|
|
35
36
|
export const ALL_MIGRATIONS = [
|
|
36
37
|
{ name: '0001_core_auth', up: up0001 },
|
|
37
38
|
{ name: '0002_rbac', up: up0002 },
|
|
@@ -46,5 +47,6 @@ export const ALL_MIGRATIONS = [
|
|
|
46
47
|
{ name: '0011_i18n_runtime', up: up0011 },
|
|
47
48
|
{ name: '0012_locale_width', up: up0012 },
|
|
48
49
|
{ name: '0013_connection_last_error_hint', up: up0013 },
|
|
50
|
+
{ name: '0014_public_surface', up: up0014 },
|
|
49
51
|
];
|
|
50
52
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAQxD,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE;IACjC,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;IACxC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE;IAChC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE;IACrC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE;IACrC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,MAAM,EAAE;IAC1C,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE;IACvC,EAAE,IAAI,EAAE,+BAA+B,EAAE,EAAE,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE;IACzC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,EAAE;IACzC,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAAE,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,EAAE,MAAM,EAAE;CAC5C,CAAC"}
|
package/dist/relocate.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* ── WHY THIS IS NOT `export-zip` / `import-zip` ─────────────────────────────
|
|
6
6
|
* The export bundle carries CONFIGURATION — settings, roles, rolePermissions,
|
|
7
7
|
* connections, snapshots, overrides, pages, views. Eight resources out of the
|
|
8
|
-
*
|
|
8
|
+
* tables in {@link META_TABLE_NAMES}. That is the right content for
|
|
9
9
|
* "replay this instance's setup somewhere else", and exactly the wrong content
|
|
10
10
|
* for "this instance is now living in a different database": it carries no
|
|
11
11
|
* users, no sessions and no user_roles, so a relocation built on it would log
|
package/dist/relocate.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* ── WHY THIS IS NOT `export-zip` / `import-zip` ─────────────────────────────
|
|
7
7
|
* The export bundle carries CONFIGURATION — settings, roles, rolePermissions,
|
|
8
8
|
* connections, snapshots, overrides, pages, views. Eight resources out of the
|
|
9
|
-
*
|
|
9
|
+
* tables in {@link META_TABLE_NAMES}. That is the right content for
|
|
10
10
|
* "replay this instance's setup somewhere else", and exactly the wrong content
|
|
11
11
|
* for "this instance is now living in a different database": it carries no
|
|
12
12
|
* users, no sessions and no user_roles, so a relocation built on it would log
|
package/dist/repos/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './settings.js';
|
|
|
7
7
|
export * from './user-prefs.js';
|
|
8
8
|
export * from './audit.js';
|
|
9
9
|
export * from './api-keys.js';
|
|
10
|
+
export * from './public-api.js';
|
|
10
11
|
export * from './password-resets.js';
|
|
11
12
|
export * from './jobs.js';
|
|
12
13
|
export * from './connections.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repos/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repos/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
package/dist/repos/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from './settings.js';
|
|
|
8
8
|
export * from './user-prefs.js';
|
|
9
9
|
export * from './audit.js';
|
|
10
10
|
export * from './api-keys.js';
|
|
11
|
+
export * from './public-api.js';
|
|
11
12
|
export * from './password-resets.js';
|
|
12
13
|
export * from './jobs.js';
|
|
13
14
|
export * from './connections.js';
|
package/dist/repos/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repos/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repos/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* publicScopesRepo / publicKeysRepo — the public surface's meta rows
|
|
3
|
+
* (28-public-surface.md §3.2–§3.3, migration `0014_public_surface`).
|
|
4
|
+
*
|
|
5
|
+
* Deliberately NOT part of `apiKeysRepo`. A publishable key differs from an
|
|
6
|
+
* `adm_sk_` key in two ways that both reach the storage layer: its secret is
|
|
7
|
+
* re-readable, and it must never be resolvable as an `RbacPrincipal` (D3).
|
|
8
|
+
* Sharing a repo would put both kinds one `where` clause apart, which is how a
|
|
9
|
+
* later "unify the key lookup" change would quietly break the property the
|
|
10
|
+
* whole off switch rests on.
|
|
11
|
+
*/
|
|
12
|
+
import type { Selectable } from 'kysely';
|
|
13
|
+
import type { MetaDb } from '../connect.js';
|
|
14
|
+
import type { AdminiumPublicKeysTable, AdminiumPublicScopesTable, AdminiumPublicSessionsTable } from '../schema/tables.js';
|
|
15
|
+
export type PublicScope = Selectable<AdminiumPublicScopesTable>;
|
|
16
|
+
export type PublicKey = Selectable<AdminiumPublicKeysTable>;
|
|
17
|
+
export type PublicSession = Selectable<AdminiumPublicSessionsTable>;
|
|
18
|
+
export interface CreatePublicScopeInput {
|
|
19
|
+
connectionId: string;
|
|
20
|
+
side: string;
|
|
21
|
+
name: string;
|
|
22
|
+
/** Canonical IANA zone; the compiler refuses anything else. */
|
|
23
|
+
timezone: string;
|
|
24
|
+
/** The scope document, already serialized. */
|
|
25
|
+
document: string;
|
|
26
|
+
proposedFromManifest?: string | null;
|
|
27
|
+
createdBy?: string | null;
|
|
28
|
+
}
|
|
29
|
+
export declare function publicScopesRepo(meta: MetaDb): {
|
|
30
|
+
create(input: CreatePublicScopeInput, at?: number): Promise<PublicScope>;
|
|
31
|
+
findById(id: string): Promise<PublicScope | null>;
|
|
32
|
+
list(): Promise<PublicScope[]>;
|
|
33
|
+
listByConnection(connectionId: string): Promise<PublicScope[]>;
|
|
34
|
+
update(id: string, patch: {
|
|
35
|
+
name?: string;
|
|
36
|
+
timezone?: string;
|
|
37
|
+
document?: string;
|
|
38
|
+
}, at?: number): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Deleting a scope is refused while a key points at it — the FK is
|
|
41
|
+
* `restrict`, so this surfaces the constraint as `false` rather than as a
|
|
42
|
+
* driver error. Revoking the key first is the intended order, because it
|
|
43
|
+
* makes the operator see what they are about to break.
|
|
44
|
+
*/
|
|
45
|
+
remove(id: string): Promise<boolean>;
|
|
46
|
+
};
|
|
47
|
+
export interface CreatePublicKeyInput {
|
|
48
|
+
name: string;
|
|
49
|
+
/** Display/lookup fragment, e.g. `adm_pub_4f2a91cd`. */
|
|
50
|
+
prefix: string;
|
|
51
|
+
tokenHash: string;
|
|
52
|
+
/** AES-GCM envelope of the full token — the re-readable copy. */
|
|
53
|
+
tokenEncrypted: string;
|
|
54
|
+
scopeId: string;
|
|
55
|
+
side: string;
|
|
56
|
+
/** JSON array narrowing the instance origin list; `[]` = no narrowing. */
|
|
57
|
+
origins?: string[];
|
|
58
|
+
createdBy?: string | null;
|
|
59
|
+
expiresAt?: number | null;
|
|
60
|
+
}
|
|
61
|
+
export declare function publicKeysRepo(meta: MetaDb): {
|
|
62
|
+
create(input: CreatePublicKeyInput, at?: number): Promise<PublicKey>;
|
|
63
|
+
/**
|
|
64
|
+
* The AUTH lookup, by prefix.
|
|
65
|
+
*
|
|
66
|
+
* Returns every candidate rather than filtering on the hash in SQL, because
|
|
67
|
+
* the caller compares hashes in CONSTANT TIME. A `where tokenHash = ?`
|
|
68
|
+
* makes the database do a byte comparison whose timing an attacker can
|
|
69
|
+
* measure; the prefix is a public display fragment and leaks nothing.
|
|
70
|
+
*
|
|
71
|
+
* Revocation and expiry are NOT filtered here either — the caller decides,
|
|
72
|
+
* so it can answer every failure identically on the wire (§3.2) instead of
|
|
73
|
+
* letting "no row" and "revoked row" take different code paths.
|
|
74
|
+
*/
|
|
75
|
+
findByPrefix(prefix: string): Promise<PublicKey[]>;
|
|
76
|
+
findById(id: string): Promise<PublicKey | null>;
|
|
77
|
+
listByScope(scopeId: string): Promise<PublicKey[]>;
|
|
78
|
+
list(): Promise<PublicKey[]>;
|
|
79
|
+
/** Rotation: a new secret against the same row, keeping scope and origins. */
|
|
80
|
+
rotate(id: string, next: {
|
|
81
|
+
prefix: string;
|
|
82
|
+
tokenHash: string;
|
|
83
|
+
tokenEncrypted: string;
|
|
84
|
+
}, at?: number): Promise<boolean>;
|
|
85
|
+
revoke(id: string, at?: number): Promise<boolean>;
|
|
86
|
+
/** Throttled by the caller, like session and api-key touches. */
|
|
87
|
+
touchLastUsed(id: string, at?: number): Promise<void>;
|
|
88
|
+
};
|
|
89
|
+
export interface CreatePublicSessionInput {
|
|
90
|
+
keyId: string;
|
|
91
|
+
tokenHash: string;
|
|
92
|
+
/** The RESOLVED claim — see the table comment on why it is not re-derived. */
|
|
93
|
+
grants: string;
|
|
94
|
+
expiresAt: number;
|
|
95
|
+
}
|
|
96
|
+
export declare function publicSessionsRepo(meta: MetaDb): {
|
|
97
|
+
create(input: CreatePublicSessionInput, at?: number): Promise<PublicSession>;
|
|
98
|
+
/**
|
|
99
|
+
* Resolve a session token.
|
|
100
|
+
*
|
|
101
|
+
* Unlike `publicKeysRepo.findByPrefix`, matching on the hash in SQL is fine
|
|
102
|
+
* here: a session token has no public display fragment to look up by, so
|
|
103
|
+
* there is nothing to narrow on first. Expiry IS filtered, because an
|
|
104
|
+
* expired session and an unknown one are the same thing to the caller and
|
|
105
|
+
* there is no reason to carry the difference back up.
|
|
106
|
+
*/
|
|
107
|
+
findValid(tokenHash: string, at?: number): Promise<PublicSession | null>;
|
|
108
|
+
touch(id: string, at?: number): Promise<void>;
|
|
109
|
+
remove(tokenHash: string): Promise<boolean>;
|
|
110
|
+
/** Housekeeping: drop everything that has lapsed. */
|
|
111
|
+
purgeExpired(at?: number): Promise<number>;
|
|
112
|
+
};
|
|
113
|
+
export type PublicSessionsRepo = ReturnType<typeof publicSessionsRepo>;
|
|
114
|
+
export type PublicScopesRepo = ReturnType<typeof publicScopesRepo>;
|
|
115
|
+
export type PublicKeysRepo = ReturnType<typeof publicKeysRepo>;
|
|
116
|
+
//# sourceMappingURL=public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/repos/public-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
/**
|
|
3
|
+
* publicScopesRepo / publicKeysRepo — the public surface's meta rows
|
|
4
|
+
* (28-public-surface.md §3.2–§3.3, migration `0014_public_surface`).
|
|
5
|
+
*
|
|
6
|
+
* Deliberately NOT part of `apiKeysRepo`. A publishable key differs from an
|
|
7
|
+
* `adm_sk_` key in two ways that both reach the storage layer: its secret is
|
|
8
|
+
* re-readable, and it must never be resolvable as an `RbacPrincipal` (D3).
|
|
9
|
+
* Sharing a repo would put both kinds one `where` clause apart, which is how a
|
|
10
|
+
* later "unify the key lookup" change would quietly break the property the
|
|
11
|
+
* whole off switch rests on.
|
|
12
|
+
*/
|
|
13
|
+
import { newId } from '../ids.js';
|
|
14
|
+
/**
|
|
15
|
+
* A `json` column does not come back the same shape on every store.
|
|
16
|
+
*
|
|
17
|
+
* postgres and mysql hand back a PARSED value; sqlite hands back the text it
|
|
18
|
+
* stored. `PublicScope.document` is declared `string` and every caller treats
|
|
19
|
+
* it as one — `resolve.ts` calls `JSON.parse` on it, and the admin route
|
|
20
|
+
* returns it under a `z.string()` response schema — so on the two production
|
|
21
|
+
* stores that parse threw and that response failed validation, while the whole
|
|
22
|
+
* suite stayed green on sqlite. Found by CI, which runs all three; the local
|
|
23
|
+
* run skipped 334 store-gated tests.
|
|
24
|
+
*
|
|
25
|
+
* Normalising here rather than at each caller is the point of a repo layer:
|
|
26
|
+
* the driver difference is this file's business and nobody else's.
|
|
27
|
+
*/
|
|
28
|
+
function jsonText(value) {
|
|
29
|
+
return typeof value === "string" ? value : JSON.stringify(value);
|
|
30
|
+
}
|
|
31
|
+
/** One scope row, with its document normalised to text whatever the store did. */
|
|
32
|
+
function scopeRow(row) {
|
|
33
|
+
return { ...row, document: jsonText(row.document) };
|
|
34
|
+
}
|
|
35
|
+
export function publicScopesRepo(meta) {
|
|
36
|
+
const { db } = meta;
|
|
37
|
+
return {
|
|
38
|
+
async create(input, at = Date.now()) {
|
|
39
|
+
const row = {
|
|
40
|
+
id: newId('psc'),
|
|
41
|
+
connectionId: input.connectionId,
|
|
42
|
+
side: input.side,
|
|
43
|
+
name: input.name,
|
|
44
|
+
timezone: input.timezone,
|
|
45
|
+
document: input.document,
|
|
46
|
+
proposedFromManifest: input.proposedFromManifest ?? null,
|
|
47
|
+
createdBy: input.createdBy ?? null,
|
|
48
|
+
createdAt: at,
|
|
49
|
+
updatedAt: at,
|
|
50
|
+
};
|
|
51
|
+
await db.insertInto('adminium_public_scopes').values(row).execute();
|
|
52
|
+
return row;
|
|
53
|
+
},
|
|
54
|
+
async findById(id) {
|
|
55
|
+
const row = await db
|
|
56
|
+
.selectFrom('adminium_public_scopes')
|
|
57
|
+
.selectAll()
|
|
58
|
+
.where('id', '=', id)
|
|
59
|
+
.executeTakeFirst();
|
|
60
|
+
return row === undefined ? null : scopeRow(row);
|
|
61
|
+
},
|
|
62
|
+
async list() {
|
|
63
|
+
const rows = await db
|
|
64
|
+
.selectFrom('adminium_public_scopes')
|
|
65
|
+
.selectAll()
|
|
66
|
+
.orderBy('createdAt', 'desc')
|
|
67
|
+
.execute();
|
|
68
|
+
return rows.map(scopeRow);
|
|
69
|
+
},
|
|
70
|
+
async listByConnection(connectionId) {
|
|
71
|
+
const rows = await db
|
|
72
|
+
.selectFrom('adminium_public_scopes')
|
|
73
|
+
.selectAll()
|
|
74
|
+
.where('connectionId', '=', connectionId)
|
|
75
|
+
.orderBy('createdAt', 'desc')
|
|
76
|
+
.execute();
|
|
77
|
+
return rows.map(scopeRow);
|
|
78
|
+
},
|
|
79
|
+
async update(id, patch, at = Date.now()) {
|
|
80
|
+
const res = await db
|
|
81
|
+
.updateTable('adminium_public_scopes')
|
|
82
|
+
.set({ ...patch, updatedAt: at })
|
|
83
|
+
.where('id', '=', id)
|
|
84
|
+
.executeTakeFirst();
|
|
85
|
+
return Number(res.numUpdatedRows) === 1;
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Deleting a scope is refused while a key points at it — the FK is
|
|
89
|
+
* `restrict`, so this surfaces the constraint as `false` rather than as a
|
|
90
|
+
* driver error. Revoking the key first is the intended order, because it
|
|
91
|
+
* makes the operator see what they are about to break.
|
|
92
|
+
*/
|
|
93
|
+
async remove(id) {
|
|
94
|
+
const attached = await db
|
|
95
|
+
.selectFrom('adminium_public_keys')
|
|
96
|
+
.select('id')
|
|
97
|
+
.where('scopeId', '=', id)
|
|
98
|
+
.executeTakeFirst();
|
|
99
|
+
if (attached !== undefined)
|
|
100
|
+
return false;
|
|
101
|
+
const res = await db
|
|
102
|
+
.deleteFrom('adminium_public_scopes')
|
|
103
|
+
.where('id', '=', id)
|
|
104
|
+
.executeTakeFirst();
|
|
105
|
+
return Number(res.numDeletedRows) === 1;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function publicKeysRepo(meta) {
|
|
110
|
+
const { db } = meta;
|
|
111
|
+
return {
|
|
112
|
+
async create(input, at = Date.now()) {
|
|
113
|
+
const row = {
|
|
114
|
+
id: newId('pbk'),
|
|
115
|
+
name: input.name,
|
|
116
|
+
prefix: input.prefix,
|
|
117
|
+
tokenHash: input.tokenHash,
|
|
118
|
+
tokenEncrypted: input.tokenEncrypted,
|
|
119
|
+
scopeId: input.scopeId,
|
|
120
|
+
side: input.side,
|
|
121
|
+
origins: JSON.stringify(input.origins ?? []),
|
|
122
|
+
expiresAt: input.expiresAt ?? null,
|
|
123
|
+
revokedAt: null,
|
|
124
|
+
lastUsedAt: null,
|
|
125
|
+
createdBy: input.createdBy ?? null,
|
|
126
|
+
createdAt: at,
|
|
127
|
+
updatedAt: at,
|
|
128
|
+
};
|
|
129
|
+
await db.insertInto('adminium_public_keys').values(row).execute();
|
|
130
|
+
return row;
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* The AUTH lookup, by prefix.
|
|
134
|
+
*
|
|
135
|
+
* Returns every candidate rather than filtering on the hash in SQL, because
|
|
136
|
+
* the caller compares hashes in CONSTANT TIME. A `where tokenHash = ?`
|
|
137
|
+
* makes the database do a byte comparison whose timing an attacker can
|
|
138
|
+
* measure; the prefix is a public display fragment and leaks nothing.
|
|
139
|
+
*
|
|
140
|
+
* Revocation and expiry are NOT filtered here either — the caller decides,
|
|
141
|
+
* so it can answer every failure identically on the wire (§3.2) instead of
|
|
142
|
+
* letting "no row" and "revoked row" take different code paths.
|
|
143
|
+
*/
|
|
144
|
+
async findByPrefix(prefix) {
|
|
145
|
+
return db
|
|
146
|
+
.selectFrom('adminium_public_keys')
|
|
147
|
+
.selectAll()
|
|
148
|
+
.where('prefix', '=', prefix)
|
|
149
|
+
.execute();
|
|
150
|
+
},
|
|
151
|
+
async findById(id) {
|
|
152
|
+
const row = await db
|
|
153
|
+
.selectFrom('adminium_public_keys')
|
|
154
|
+
.selectAll()
|
|
155
|
+
.where('id', '=', id)
|
|
156
|
+
.executeTakeFirst();
|
|
157
|
+
return row ?? null;
|
|
158
|
+
},
|
|
159
|
+
async listByScope(scopeId) {
|
|
160
|
+
return db
|
|
161
|
+
.selectFrom('adminium_public_keys')
|
|
162
|
+
.selectAll()
|
|
163
|
+
.where('scopeId', '=', scopeId)
|
|
164
|
+
.orderBy('createdAt', 'desc')
|
|
165
|
+
.execute();
|
|
166
|
+
},
|
|
167
|
+
async list() {
|
|
168
|
+
return db.selectFrom('adminium_public_keys').selectAll().orderBy('createdAt', 'desc').execute();
|
|
169
|
+
},
|
|
170
|
+
/** Rotation: a new secret against the same row, keeping scope and origins. */
|
|
171
|
+
async rotate(id, next, at = Date.now()) {
|
|
172
|
+
const res = await db
|
|
173
|
+
.updateTable('adminium_public_keys')
|
|
174
|
+
.set({ ...next, updatedAt: at })
|
|
175
|
+
.where('id', '=', id)
|
|
176
|
+
.where('revokedAt', 'is', null)
|
|
177
|
+
.executeTakeFirst();
|
|
178
|
+
return Number(res.numUpdatedRows) === 1;
|
|
179
|
+
},
|
|
180
|
+
async revoke(id, at = Date.now()) {
|
|
181
|
+
const res = await db
|
|
182
|
+
.updateTable('adminium_public_keys')
|
|
183
|
+
.set({ revokedAt: at, updatedAt: at })
|
|
184
|
+
.where('id', '=', id)
|
|
185
|
+
.where('revokedAt', 'is', null)
|
|
186
|
+
.executeTakeFirst();
|
|
187
|
+
return Number(res.numUpdatedRows) === 1;
|
|
188
|
+
},
|
|
189
|
+
/** Throttled by the caller, like session and api-key touches. */
|
|
190
|
+
async touchLastUsed(id, at = Date.now()) {
|
|
191
|
+
await db.updateTable('adminium_public_keys').set({ lastUsedAt: at }).where('id', '=', id).execute();
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export function publicSessionsRepo(meta) {
|
|
196
|
+
const { db } = meta;
|
|
197
|
+
return {
|
|
198
|
+
async create(input, at = Date.now()) {
|
|
199
|
+
const row = {
|
|
200
|
+
id: newId('pss'),
|
|
201
|
+
keyId: input.keyId,
|
|
202
|
+
tokenHash: input.tokenHash,
|
|
203
|
+
grants: input.grants,
|
|
204
|
+
expiresAt: input.expiresAt,
|
|
205
|
+
createdAt: at,
|
|
206
|
+
lastSeenAt: null,
|
|
207
|
+
};
|
|
208
|
+
await db.insertInto('adminium_public_sessions').values(row).execute();
|
|
209
|
+
return row;
|
|
210
|
+
},
|
|
211
|
+
/**
|
|
212
|
+
* Resolve a session token.
|
|
213
|
+
*
|
|
214
|
+
* Unlike `publicKeysRepo.findByPrefix`, matching on the hash in SQL is fine
|
|
215
|
+
* here: a session token has no public display fragment to look up by, so
|
|
216
|
+
* there is nothing to narrow on first. Expiry IS filtered, because an
|
|
217
|
+
* expired session and an unknown one are the same thing to the caller and
|
|
218
|
+
* there is no reason to carry the difference back up.
|
|
219
|
+
*/
|
|
220
|
+
async findValid(tokenHash, at = Date.now()) {
|
|
221
|
+
const row = await db
|
|
222
|
+
.selectFrom('adminium_public_sessions')
|
|
223
|
+
.selectAll()
|
|
224
|
+
.where('tokenHash', '=', tokenHash)
|
|
225
|
+
.where('expiresAt', '>', at)
|
|
226
|
+
.executeTakeFirst();
|
|
227
|
+
return row ?? null;
|
|
228
|
+
},
|
|
229
|
+
async touch(id, at = Date.now()) {
|
|
230
|
+
await db.updateTable('adminium_public_sessions').set({ lastSeenAt: at }).where('id', '=', id).execute();
|
|
231
|
+
},
|
|
232
|
+
async remove(tokenHash) {
|
|
233
|
+
const res = await db
|
|
234
|
+
.deleteFrom('adminium_public_sessions')
|
|
235
|
+
.where('tokenHash', '=', tokenHash)
|
|
236
|
+
.executeTakeFirst();
|
|
237
|
+
return Number(res.numDeletedRows) > 0;
|
|
238
|
+
},
|
|
239
|
+
/** Housekeeping: drop everything that has lapsed. */
|
|
240
|
+
async purgeExpired(at = Date.now()) {
|
|
241
|
+
const res = await db
|
|
242
|
+
.deleteFrom('adminium_public_sessions')
|
|
243
|
+
.where('expiresAt', '<=', at)
|
|
244
|
+
.executeTakeFirst();
|
|
245
|
+
return Number(res.numDeletedRows);
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=public-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/repos/public-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,8 +88,47 @@ export declare const SETTINGS_REGISTRY: {
|
|
|
88
88
|
readonly 'branding.showVersion': SettingDef<boolean>;
|
|
89
89
|
readonly 'branding.faviconFileId': SettingDef<string | null>;
|
|
90
90
|
readonly 'auth.sessionTtlHours': SettingDef<number>;
|
|
91
|
+
/**
|
|
92
|
+
* ADVISORY, NOT A PERIMETER — the name overpromises, so read this before
|
|
93
|
+
* relying on it. Exactly two things in the product read this flag:
|
|
94
|
+
*
|
|
95
|
+
* 1. `apps/server/src/routes/auth/handlers.ts` — `needsTwoFactorSetup` puts
|
|
96
|
+
* `twoFactorSetupRequired` on the login reply and on `GET /auth/session`
|
|
97
|
+
* when the account has no TOTP. That is a SIGNAL for the client to route
|
|
98
|
+
* into the enroll flow, deliberately not a denial: `/auth/2fa/enroll` and
|
|
99
|
+
* `/auth/2fa/activate` are themselves `requireAuth`, so refusing the
|
|
100
|
+
* session would leave the user no door to enroll through.
|
|
101
|
+
* 2. Same file, `disable2faHandler` — `POST /auth/2fa/disable` throws
|
|
102
|
+
* ForbiddenError while the flag is on, so an account that IS enrolled
|
|
103
|
+
* cannot opt back out.
|
|
104
|
+
*
|
|
105
|
+
* NOTHING ELSE READS IT. In as many words: no server-side preHandler blocks
|
|
106
|
+
* an un-enrolled principal. A caller that simply ignores the signal — any
|
|
107
|
+
* API client that is not our dashboard — holds a full session and can call
|
|
108
|
+
* every route without ever enrolling. API-key principals are outside the
|
|
109
|
+
* question structurally: `apps/server/src/plugins/auth.ts` resolves an
|
|
110
|
+
* `Authorization: Bearer adm_…` key and returns before a session exists, so
|
|
111
|
+
* no session-conditioned gate could reach them even if one were added. What
|
|
112
|
+
* this flag hardens is enrollment (you cannot leave once in), not access.
|
|
113
|
+
*
|
|
114
|
+
* Marked `P`, so a config bundle carries it: `adminium import-zip` replays
|
|
115
|
+
* settings through `settingsRepo.set` (see the import service under
|
|
116
|
+
* `apps/server/src/export/`), which can land `true` on an instance where
|
|
117
|
+
* nobody has TOTP enrolled. Survivable precisely BECAUSE it is not a
|
|
118
|
+
* perimeter — everyone can still log in — so the recovery is to turn it off
|
|
119
|
+
* at Settings → Security (`PUT /settings/security`, needs `settings.manage`).
|
|
120
|
+
* If no admin UI is reachable, the floor is SQL; there is no
|
|
121
|
+
* `adminium settings` subcommand to do it with:
|
|
122
|
+
*
|
|
123
|
+
* DELETE FROM adminium_settings WHERE key = 'auth.require2fa';
|
|
124
|
+
*
|
|
125
|
+
* Deleting the row suffices — `packages/meta/src/repos/settings.ts` `get()`
|
|
126
|
+
* returns the registry default when no row exists, and that default is
|
|
127
|
+
* `false`.
|
|
128
|
+
*/
|
|
91
129
|
readonly 'auth.require2fa': SettingDef<boolean>;
|
|
92
130
|
readonly 'auth.allowSignup': SettingDef<boolean>;
|
|
131
|
+
readonly 'publicApi.enabled': SettingDef<boolean>;
|
|
93
132
|
readonly 'auth.passwordMinLength': SettingDef<number>;
|
|
94
133
|
readonly 'email.smtp': SettingDef<{
|
|
95
134
|
host: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-registry.d.ts","sourceRoot":"","sources":["../../src/schema/settings-registry.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAwCD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;kBAAiC,CAAC;AAErE,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,iBAAiB;;;;;IAK5B;;;;;;;;;;;;;OAaG;;;;IAIH;;;;OAIG
|
|
1
|
+
{"version":3,"file":"settings-registry.d.ts","sourceRoot":"","sources":["../../src/schema/settings-registry.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAwCD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;kBAAiC,CAAC;AAErE,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,iBAAiB;;;;;IAK5B;;;;;;;;;;;;;OAaG;;;;IAIH;;;;OAIG;;;;IAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+CH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;;IAEH;;;;;;;;;;;;;;OAcG;;;;;;;;IAQH;;;;;;;;;;OAUG;;IAEH;;;;;;OAMG;;CAEK,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC;AAChD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,gBAAgB,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE7G,eAAO,MAAM,YAAY,EAAqC,UAAU,EAAE,CAAC;AAE3E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE7D"}
|
|
@@ -82,8 +82,61 @@ export const SETTINGS_REGISTRY = {
|
|
|
82
82
|
'branding.showVersion': def(z.boolean(), true, 'Show the app version in the sidebar', P),
|
|
83
83
|
'branding.faviconFileId': def(z.string().nullable(), null, 'Favicon file id', P),
|
|
84
84
|
'auth.sessionTtlHours': def(z.number().int().min(1).max(8760), 720, 'Session lifetime in hours', P),
|
|
85
|
+
/**
|
|
86
|
+
* ADVISORY, NOT A PERIMETER — the name overpromises, so read this before
|
|
87
|
+
* relying on it. Exactly two things in the product read this flag:
|
|
88
|
+
*
|
|
89
|
+
* 1. `apps/server/src/routes/auth/handlers.ts` — `needsTwoFactorSetup` puts
|
|
90
|
+
* `twoFactorSetupRequired` on the login reply and on `GET /auth/session`
|
|
91
|
+
* when the account has no TOTP. That is a SIGNAL for the client to route
|
|
92
|
+
* into the enroll flow, deliberately not a denial: `/auth/2fa/enroll` and
|
|
93
|
+
* `/auth/2fa/activate` are themselves `requireAuth`, so refusing the
|
|
94
|
+
* session would leave the user no door to enroll through.
|
|
95
|
+
* 2. Same file, `disable2faHandler` — `POST /auth/2fa/disable` throws
|
|
96
|
+
* ForbiddenError while the flag is on, so an account that IS enrolled
|
|
97
|
+
* cannot opt back out.
|
|
98
|
+
*
|
|
99
|
+
* NOTHING ELSE READS IT. In as many words: no server-side preHandler blocks
|
|
100
|
+
* an un-enrolled principal. A caller that simply ignores the signal — any
|
|
101
|
+
* API client that is not our dashboard — holds a full session and can call
|
|
102
|
+
* every route without ever enrolling. API-key principals are outside the
|
|
103
|
+
* question structurally: `apps/server/src/plugins/auth.ts` resolves an
|
|
104
|
+
* `Authorization: Bearer adm_…` key and returns before a session exists, so
|
|
105
|
+
* no session-conditioned gate could reach them even if one were added. What
|
|
106
|
+
* this flag hardens is enrollment (you cannot leave once in), not access.
|
|
107
|
+
*
|
|
108
|
+
* Marked `P`, so a config bundle carries it: `adminium import-zip` replays
|
|
109
|
+
* settings through `settingsRepo.set` (see the import service under
|
|
110
|
+
* `apps/server/src/export/`), which can land `true` on an instance where
|
|
111
|
+
* nobody has TOTP enrolled. Survivable precisely BECAUSE it is not a
|
|
112
|
+
* perimeter — everyone can still log in — so the recovery is to turn it off
|
|
113
|
+
* at Settings → Security (`PUT /settings/security`, needs `settings.manage`).
|
|
114
|
+
* If no admin UI is reachable, the floor is SQL; there is no
|
|
115
|
+
* `adminium settings` subcommand to do it with:
|
|
116
|
+
*
|
|
117
|
+
* DELETE FROM adminium_settings WHERE key = 'auth.require2fa';
|
|
118
|
+
*
|
|
119
|
+
* Deleting the row suffices — `packages/meta/src/repos/settings.ts` `get()`
|
|
120
|
+
* returns the registry default when no row exists, and that default is
|
|
121
|
+
* `false`.
|
|
122
|
+
*/
|
|
85
123
|
'auth.require2fa': def(z.boolean(), false, 'Require TOTP for all users', P),
|
|
86
124
|
'auth.allowSignup': def(z.boolean(), false, 'Allow self-signup (default invite-only)', P),
|
|
125
|
+
/*
|
|
126
|
+
* The public API's runtime off switch (28-public-surface.md §3.5 level 2).
|
|
127
|
+
*
|
|
128
|
+
* DEFAULT FALSE, and deliberately NOT `portable`. It is an instance-level
|
|
129
|
+
* decision about whether this database is reachable from the internet, and
|
|
130
|
+
* carrying it in a config bundle would turn "I replayed my setup on a new
|
|
131
|
+
* box" into "I published a database I had not scoped yet". That is the same
|
|
132
|
+
* class of mistake as `system.superAdminCreatedAt` travelling in a bundle,
|
|
133
|
+
* which is the incident this file's `portable` comment was written for.
|
|
134
|
+
*
|
|
135
|
+
* Level 1 (`ADMINIUM_PUBLIC_API_ORIGINS`) still gates registration, so this
|
|
136
|
+
* key does nothing on an instance that never opted in — two independent
|
|
137
|
+
* switches, both of which must be on.
|
|
138
|
+
*/
|
|
139
|
+
'publicApi.enabled': def(z.boolean(), false, 'Serve the scoped public API at /api/v1/public'),
|
|
87
140
|
'auth.passwordMinLength': def(z.number().int().min(8).max(128), 10, 'Minimum password length', P),
|
|
88
141
|
'email.smtp': def(smtpSchema, null, 'SMTP transport; email features degrade gracefully when unset', { secret: true, portable: true }),
|
|
89
142
|
'llm.provider': def(llmProviderSchema, null, 'LLM provider (06-llm-assist.md §3.1)', P),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-registry.js","sourceRoot":"","sources":["../../src/schema/settings-registry.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkC5F,SAAS,GAAG,CACV,MAAoB,EACpB,IAAO,EACP,WAAmB,EACnB,OAAmB,EAAE;IAErB,OAAO;QACL,MAAM;QACN,OAAO,EAAE,IAAI;QACb,WAAW;QACX,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,GAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd,MAAM,iBAAiB,GAAG,CAAC;KACxB,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;KAChF,QAAQ,EAAE,CAAC;AAEd;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAC1C,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAKrE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB,EAAE,GAAG,CAA8B,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClG,mBAAmB,EAAE,GAAG,CAA+B,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACzG,oBAAoB,EAAE,GAAG,CAAgC,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnH,gBAAgB,EAAE,GAAG,CAA+B,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/F;;;;;;;;;;;;;OAaG;IACH,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,mCAAmC,CAAC;IACpF,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC7F,qBAAqB,EAAE,GAAG,CAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACzF;;;;OAIG;IACH,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC,CAAC;IACxF,wBAAwB,EAAE,GAAG,CAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC/F,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACnG,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC3E,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-registry.js","sourceRoot":"","sources":["../../src/schema/settings-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/tables.d.ts
CHANGED
|
@@ -574,6 +574,90 @@ export interface AdminiumChangelogSeenTable {
|
|
|
574
574
|
version: string;
|
|
575
575
|
seenAt: Ts;
|
|
576
576
|
}
|
|
577
|
+
/**
|
|
578
|
+
* 28-public-surface.md §3.2 — the scope document.
|
|
579
|
+
*
|
|
580
|
+
* One row per (connection, side) the operator publishes. `document` holds the
|
|
581
|
+
* resources, their logical refs, the `expose` allow-list and the mandatory
|
|
582
|
+
* predicate; it is re-validated by `compileScope` on every read from disk and
|
|
583
|
+
* never trusted.
|
|
584
|
+
*/
|
|
585
|
+
export interface AdminiumPublicScopesTable {
|
|
586
|
+
id: Id;
|
|
587
|
+
connectionId: Id;
|
|
588
|
+
/** `staff` | `customer` — the `frontends[]` side this scope serves (§4). */
|
|
589
|
+
side: string;
|
|
590
|
+
name: string;
|
|
591
|
+
/**
|
|
592
|
+
* IANA zone. A COLUMN rather than a `document` field because the serializer
|
|
593
|
+
* needs it without parsing the whole document first (28 D20).
|
|
594
|
+
*/
|
|
595
|
+
timezone: string;
|
|
596
|
+
document: string;
|
|
597
|
+
/** Manifest key this was seeded from, or null when authored in Studio (O2). */
|
|
598
|
+
proposedFromManifest: string | null;
|
|
599
|
+
createdBy: Id | null;
|
|
600
|
+
createdAt: Ts;
|
|
601
|
+
updatedAt: Ts;
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* 28-public-surface.md §3.3 — the publishable key.
|
|
605
|
+
*
|
|
606
|
+
* Separate from `adminium_api_keys` on two load-bearing properties: the secret
|
|
607
|
+
* is re-readable (it lives in a public bundle and must survive a rebuild), and
|
|
608
|
+
* a token from this table is never an `RbacPrincipal` (28 D3), which is what
|
|
609
|
+
* makes it inert on every other route by construction.
|
|
610
|
+
*/
|
|
611
|
+
export interface AdminiumPublicKeysTable {
|
|
612
|
+
id: Id;
|
|
613
|
+
name: string;
|
|
614
|
+
/** Display fragment, e.g. `adm_pub_4f2a91cd`. */
|
|
615
|
+
prefix: string;
|
|
616
|
+
tokenHash: string;
|
|
617
|
+
/** AES-GCM envelope — the re-readable copy. Never leaves the server as-is. */
|
|
618
|
+
tokenEncrypted: string;
|
|
619
|
+
scopeId: Id;
|
|
620
|
+
side: string;
|
|
621
|
+
/** JSON string array narrowing `ADMINIUM_PUBLIC_API_ORIGINS`; `[]` = no narrowing. */
|
|
622
|
+
origins: string;
|
|
623
|
+
expiresAt: Ts | null;
|
|
624
|
+
revokedAt: Ts | null;
|
|
625
|
+
lastUsedAt: Ts | null;
|
|
626
|
+
createdBy: Id | null;
|
|
627
|
+
createdAt: Ts;
|
|
628
|
+
updatedAt: Ts;
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* 28-public-surface.md §3.4 — the end-customer session.
|
|
632
|
+
*
|
|
633
|
+
* There is deliberately no `userId`: an end customer is not an
|
|
634
|
+
* `adminium_users` row, and this table is the whole of what a claimed customer
|
|
635
|
+
* is. `grants` is stored RESOLVED so editing a scope cannot retroactively widen
|
|
636
|
+
* a session already in someone's browser.
|
|
637
|
+
*/
|
|
638
|
+
export interface AdminiumPublicSessionsTable {
|
|
639
|
+
id: Id;
|
|
640
|
+
keyId: Id;
|
|
641
|
+
tokenHash: string;
|
|
642
|
+
grants: string;
|
|
643
|
+
expiresAt: Ts;
|
|
644
|
+
createdAt: Ts;
|
|
645
|
+
lastSeenAt: Ts | null;
|
|
646
|
+
}
|
|
647
|
+
/** 28-public-surface.md §3.4 — one-time challenge for the `email-code` tier. */
|
|
648
|
+
export interface AdminiumPublicChallengesTable {
|
|
649
|
+
id: Id;
|
|
650
|
+
keyId: Id;
|
|
651
|
+
ref: string;
|
|
652
|
+
/** Hashed, not stored plain — a challenge table is otherwise a customer address list. */
|
|
653
|
+
destinationHash: string;
|
|
654
|
+
codeHash: string;
|
|
655
|
+
/** On the row, not in the in-process limiter, so the bound survives a restart. */
|
|
656
|
+
attempts: number;
|
|
657
|
+
consumedAt: Ts | null;
|
|
658
|
+
expiresAt: Ts;
|
|
659
|
+
createdAt: Ts;
|
|
660
|
+
}
|
|
577
661
|
/** The full meta-store database — every adminium_* table (BRIEF §6). */
|
|
578
662
|
export interface MetaDB {
|
|
579
663
|
adminium_migrations: AdminiumMigrationsTable;
|
|
@@ -610,7 +694,11 @@ export interface MetaDB {
|
|
|
610
694
|
adminium_changelog_seen: AdminiumChangelogSeenTable;
|
|
611
695
|
adminium_locales: AdminiumLocalesTable;
|
|
612
696
|
adminium_translations: AdminiumTranslationsTable;
|
|
697
|
+
adminium_public_scopes: AdminiumPublicScopesTable;
|
|
698
|
+
adminium_public_keys: AdminiumPublicKeysTable;
|
|
699
|
+
adminium_public_sessions: AdminiumPublicSessionsTable;
|
|
700
|
+
adminium_public_challenges: AdminiumPublicChallengesTable;
|
|
613
701
|
}
|
|
614
702
|
/** Every physical table name, in dependency-safe creation order. */
|
|
615
|
-
export declare const META_TABLE_NAMES: readonly ["adminium_migrations", "adminium_users", "adminium_user_prefs", "adminium_sessions", "adminium_password_resets", "adminium_settings", "adminium_roles", "adminium_role_permissions", "adminium_user_roles", "adminium_api_keys", "adminium_files", "adminium_connections", "adminium_schema_snapshots", "adminium_schema_overrides", "adminium_pages", "adminium_views", "adminium_jobs", "adminium_audit_log", "adminium_notifications", "adminium_notification_prefs", "adminium_llm_runs", "adminium_automations", "adminium_automation_runs", "adminium_scheduled_reports", "adminium_exports", "adminium_imports", "adminium_email_templates", "adminium_webhooks", "adminium_webhook_deliveries", "adminium_feature_flags", "adminium_manifests", "adminium_changelog_seen", "adminium_locales", "adminium_translations"];
|
|
703
|
+
export declare const META_TABLE_NAMES: readonly ["adminium_migrations", "adminium_users", "adminium_user_prefs", "adminium_sessions", "adminium_password_resets", "adminium_settings", "adminium_roles", "adminium_role_permissions", "adminium_user_roles", "adminium_api_keys", "adminium_files", "adminium_connections", "adminium_schema_snapshots", "adminium_schema_overrides", "adminium_pages", "adminium_views", "adminium_jobs", "adminium_audit_log", "adminium_notifications", "adminium_notification_prefs", "adminium_llm_runs", "adminium_automations", "adminium_automation_runs", "adminium_scheduled_reports", "adminium_exports", "adminium_imports", "adminium_email_templates", "adminium_webhooks", "adminium_webhook_deliveries", "adminium_feature_flags", "adminium_manifests", "adminium_changelog_seen", "adminium_locales", "adminium_translations", "adminium_public_scopes", "adminium_public_keys", "adminium_public_sessions", "adminium_public_challenges"];
|
|
616
704
|
//# sourceMappingURL=tables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/schema/tables.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/schema/tables.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/tables.js
CHANGED
|
@@ -50,5 +50,9 @@ export const META_TABLE_NAMES = [
|
|
|
50
50
|
'adminium_changelog_seen',
|
|
51
51
|
'adminium_locales',
|
|
52
52
|
'adminium_translations',
|
|
53
|
+
'adminium_public_scopes',
|
|
54
|
+
'adminium_public_keys',
|
|
55
|
+
'adminium_public_sessions',
|
|
56
|
+
'adminium_public_challenges',
|
|
53
57
|
];
|
|
54
58
|
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/schema/tables.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/schema/tables.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;;;GAcG;AAsvBH,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,qBAAqB;IACrB,gBAAgB;IAChB,qBAAqB;IACrB,mBAAmB;IACnB,0BAA0B;IAC1B,mBAAmB;IACnB,gBAAgB;IAChB,2BAA2B;IAC3B,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,2BAA2B;IAC3B,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,oBAAoB;IACpB,wBAAwB;IACxB,6BAA6B;IAC7B,mBAAmB;IACnB,sBAAsB;IACtB,0BAA0B;IAC1B,4BAA4B;IAC5B,kBAAkB;IAClB,kBAAkB;IAClB,0BAA0B;IAC1B,mBAAmB;IACnB,6BAA6B;IAC7B,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,0BAA0B;IAC1B,4BAA4B;CACgB,CAAC"}
|