@enbox/dwn-server 0.0.7 → 0.0.8
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/esm/src/admin/admin-api.d.ts +5 -1
- package/dist/esm/src/admin/admin-api.d.ts.map +1 -1
- package/dist/esm/src/admin/admin-api.js +327 -7
- package/dist/esm/src/admin/admin-api.js.map +1 -1
- package/dist/esm/src/admin/admin-auth.d.ts +21 -3
- package/dist/esm/src/admin/admin-auth.d.ts.map +1 -1
- package/dist/esm/src/admin/admin-auth.js +17 -9
- package/dist/esm/src/admin/admin-auth.js.map +1 -1
- package/dist/esm/src/admin/admin-passkey-store.d.ts +68 -0
- package/dist/esm/src/admin/admin-passkey-store.d.ts.map +1 -0
- package/dist/esm/src/admin/admin-passkey-store.js +132 -0
- package/dist/esm/src/admin/admin-passkey-store.js.map +1 -0
- package/dist/esm/src/admin/admin-session.d.ts +35 -0
- package/dist/esm/src/admin/admin-session.d.ts.map +1 -0
- package/dist/esm/src/admin/admin-session.js +91 -0
- package/dist/esm/src/admin/admin-session.js.map +1 -0
- package/dist/esm/src/admin/audit-log.d.ts.map +1 -1
- package/dist/esm/src/admin/audit-log.js +5 -43
- package/dist/esm/src/admin/audit-log.js.map +1 -1
- package/dist/esm/src/admin/index.d.ts +5 -1
- package/dist/esm/src/admin/index.d.ts.map +1 -1
- package/dist/esm/src/admin/index.js +2 -0
- package/dist/esm/src/admin/index.js.map +1 -1
- package/dist/esm/src/admin/types.d.ts +22 -0
- package/dist/esm/src/admin/types.d.ts.map +1 -1
- package/dist/esm/src/admin/webhook-manager.d.ts.map +1 -1
- package/dist/esm/src/admin/webhook-manager.js +11 -10
- package/dist/esm/src/admin/webhook-manager.js.map +1 -1
- package/dist/esm/src/config.d.ts +18 -0
- package/dist/esm/src/config.d.ts.map +1 -1
- package/dist/esm/src/config.js +18 -0
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/dwn-server.d.ts.map +1 -1
- package/dist/esm/src/dwn-server.js +46 -11
- package/dist/esm/src/dwn-server.js.map +1 -1
- package/dist/esm/src/http-api.d.ts +4 -0
- package/dist/esm/src/http-api.d.ts.map +1 -1
- package/dist/esm/src/http-api.js +14 -4
- package/dist/esm/src/http-api.js.map +1 -1
- package/dist/esm/src/migrations/001-initial-server-schema.d.ts +21 -0
- package/dist/esm/src/migrations/001-initial-server-schema.d.ts.map +1 -0
- package/dist/esm/src/migrations/001-initial-server-schema.js +97 -0
- package/dist/esm/src/migrations/001-initial-server-schema.js.map +1 -0
- package/dist/esm/src/migrations/index.d.ts +13 -0
- package/dist/esm/src/migrations/index.d.ts.map +1 -0
- package/dist/esm/src/migrations/index.js +5 -0
- package/dist/esm/src/migrations/index.js.map +1 -0
- package/dist/esm/src/registration/registration-store.d.ts +4 -0
- package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
- package/dist/esm/src/registration/registration-store.js +11 -34
- package/dist/esm/src/registration/registration-store.js.map +1 -1
- package/dist/esm/src/server-migration-runner.d.ts +23 -0
- package/dist/esm/src/server-migration-runner.d.ts.map +1 -0
- package/dist/esm/src/server-migration-runner.js +57 -0
- package/dist/esm/src/server-migration-runner.js.map +1 -0
- package/dist/esm/src/storage.d.ts +15 -0
- package/dist/esm/src/storage.d.ts.map +1 -1
- package/dist/esm/src/storage.js +135 -17
- package/dist/esm/src/storage.js.map +1 -1
- package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts +11 -1
- package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
- package/dist/esm/src/web5-connect/sql-ttl-cache.js +19 -20
- package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
- package/dist/esm/src/web5-connect/web5-connect-server.d.ts +10 -3
- package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
- package/dist/esm/src/web5-connect/web5-connect-server.js +10 -4
- package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
- package/package.json +3 -2
- package/src/admin/admin-api.ts +403 -10
- package/src/admin/admin-auth.ts +38 -9
- package/src/admin/admin-passkey-store.ts +190 -0
- package/src/admin/admin-session.ts +116 -0
- package/src/admin/audit-log.ts +7 -44
- package/src/admin/index.ts +5 -0
- package/src/admin/types.ts +28 -0
- package/src/admin/webhook-manager.ts +12 -10
- package/src/config.ts +21 -0
- package/src/dwn-server.ts +49 -11
- package/src/http-api.ts +20 -5
- package/src/migrations/001-initial-server-schema.ts +114 -0
- package/src/migrations/index.ts +18 -0
- package/src/registration/registration-store.ts +13 -36
- package/src/server-migration-runner.ts +74 -0
- package/src/storage.ts +145 -17
- package/src/web5-connect/sql-ttl-cache.ts +21 -22
- package/src/web5-connect/web5-connect-server.ts +14 -5
|
@@ -2,29 +2,37 @@ import { timingSafeEqual } from 'crypto';
|
|
|
2
2
|
/**
|
|
3
3
|
* Validates the admin bearer token from the `Authorization` header.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Supports two authentication methods:
|
|
6
|
+
* 1. **Static bearer token** — the original `DWN_ADMIN_TOKEN`
|
|
7
|
+
* 2. **Session token** — issued after a successful WebAuthn passkey login
|
|
8
|
+
*
|
|
9
|
+
* @returns An {@link AdminAuthResult}. When `error` is `null`, auth passed.
|
|
7
10
|
*/
|
|
8
|
-
export function validateAdminAuth(req, config) {
|
|
11
|
+
export function validateAdminAuth(req, config, sessionManager) {
|
|
9
12
|
const expectedToken = config.adminToken;
|
|
10
13
|
// If no admin token is configured, the admin API is disabled.
|
|
11
14
|
// Return 404 to avoid revealing the endpoint exists.
|
|
12
15
|
if (!expectedToken) {
|
|
13
|
-
return new Response('Not Found', { status: 404 });
|
|
16
|
+
return { error: new Response('Not Found', { status: 404 }) };
|
|
14
17
|
}
|
|
15
18
|
const authHeader = req.headers.get('authorization');
|
|
16
19
|
if (!authHeader) {
|
|
17
|
-
return new Response('Unauthorized', { status: 401 });
|
|
20
|
+
return { error: new Response('Unauthorized', { status: 401 }) };
|
|
18
21
|
}
|
|
19
22
|
// Expect "Bearer <token>" format.
|
|
20
23
|
if (!authHeader.startsWith('Bearer ')) {
|
|
21
|
-
return new Response('Unauthorized', { status: 401 });
|
|
24
|
+
return { error: new Response('Unauthorized', { status: 401 }) };
|
|
22
25
|
}
|
|
23
26
|
const suppliedToken = authHeader.slice('Bearer '.length);
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
// Try static token first.
|
|
28
|
+
if (constantTimeEquals(expectedToken, suppliedToken)) {
|
|
29
|
+
return { error: null, authMethod: 'token' };
|
|
30
|
+
}
|
|
31
|
+
// Try session token if a session manager is available.
|
|
32
|
+
if (sessionManager && sessionManager.validate(suppliedToken)) {
|
|
33
|
+
return { error: null, authMethod: 'session' };
|
|
26
34
|
}
|
|
27
|
-
return
|
|
35
|
+
return { error: new Response('Unauthorized', { status: 401 }) };
|
|
28
36
|
}
|
|
29
37
|
/**
|
|
30
38
|
* Compares two strings in constant time to prevent timing attacks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-auth.js","sourceRoot":"","sources":["../../../../src/admin/admin-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-auth.js","sourceRoot":"","sources":["../../../../src/admin/admin-auth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAiBzC;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,MAAuB,EACvB,cAAoC;IAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,8DAA8D;IAC9D,qDAAqD;IACrD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzD,0BAA0B;IAC1B,IAAI,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,uDAAuD;IACvD,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,+EAA+E;IAC/E,sDAAsD;IACtD,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9C,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Dialect } from '@enbox/dwn-sql-store';
|
|
2
|
+
/**
|
|
3
|
+
* A registered WebAuthn credential (passkey) for admin access.
|
|
4
|
+
*/
|
|
5
|
+
export type AdminPasskeyRecord = {
|
|
6
|
+
/** Base64url-encoded credential ID. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Human-readable name for the passkey (e.g. "MacBook Touch ID"). */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Base64url-encoded COSE public key. */
|
|
11
|
+
publicKey: string;
|
|
12
|
+
/** Monotonically increasing counter for replay protection. */
|
|
13
|
+
counter: number;
|
|
14
|
+
/** WebAuthn transports the credential supports (JSON-encoded string array). */
|
|
15
|
+
transports: string;
|
|
16
|
+
/** ISO-8601 timestamp when the passkey was registered. */
|
|
17
|
+
createdAt: string;
|
|
18
|
+
/** ISO-8601 timestamp of the most recent successful authentication. */
|
|
19
|
+
lastUsedAt: string | null;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* SQL-backed credential store for WebAuthn passkeys used by the admin panel.
|
|
23
|
+
*
|
|
24
|
+
* Follows the same Kysely + Dialect pattern as {@link AuditLog} and
|
|
25
|
+
* {@link WebhookManager}. The `adminPasskeys` table is created automatically
|
|
26
|
+
* on first use.
|
|
27
|
+
*
|
|
28
|
+
* Future: migrate to DID/DWN-based auth (see https://github.com/enboxorg/enbox/issues/546).
|
|
29
|
+
*/
|
|
30
|
+
export declare class AdminPasskeyStore {
|
|
31
|
+
#private;
|
|
32
|
+
private constructor();
|
|
33
|
+
/**
|
|
34
|
+
* Creates and initializes an `AdminPasskeyStore` instance.
|
|
35
|
+
* Creates the `adminPasskeys` table if it does not already exist.
|
|
36
|
+
*/
|
|
37
|
+
static create(dialect: Dialect): Promise<AdminPasskeyStore>;
|
|
38
|
+
/**
|
|
39
|
+
* Stores a new passkey credential.
|
|
40
|
+
*/
|
|
41
|
+
save(record: AdminPasskeyRecord): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Retrieves a passkey by its credential ID.
|
|
44
|
+
*/
|
|
45
|
+
getById(id: string): Promise<AdminPasskeyRecord | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* Returns all registered passkeys, ordered by creation date (newest first).
|
|
48
|
+
*/
|
|
49
|
+
list(): Promise<AdminPasskeyRecord[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Returns the count of registered passkeys.
|
|
52
|
+
*/
|
|
53
|
+
count(): Promise<number>;
|
|
54
|
+
/**
|
|
55
|
+
* Updates the counter and last-used timestamp after a successful authentication.
|
|
56
|
+
*/
|
|
57
|
+
updateCounter(id: string, counter: number): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Deletes a passkey by its credential ID.
|
|
60
|
+
* @returns `true` if the passkey was found and deleted.
|
|
61
|
+
*/
|
|
62
|
+
delete(id: string): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Closes the underlying database connection.
|
|
65
|
+
*/
|
|
66
|
+
close(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=admin-passkey-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-passkey-store.d.ts","sourceRoot":"","sources":["../../../../src/admin/admin-passkey-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uCAAuC;IACvC,EAAE,EAAG,MAAM,CAAC;IACZ,qEAAqE;IACrE,IAAI,EAAG,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAG,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,EAAG,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,EAAG,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,EAAG,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,EAAG,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;;IAK5B,OAAO;IAIP;;;OAGG;WACiB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoBxE;;OAEG;IACU,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5D;;OAEG;IACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAczE;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUlD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC;;OAEG;IACU,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtE;;;OAGG;IACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAepC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Kysely, sql } from 'kysely';
|
|
2
|
+
/**
|
|
3
|
+
* SQL-backed credential store for WebAuthn passkeys used by the admin panel.
|
|
4
|
+
*
|
|
5
|
+
* Follows the same Kysely + Dialect pattern as {@link AuditLog} and
|
|
6
|
+
* {@link WebhookManager}. The `adminPasskeys` table is created automatically
|
|
7
|
+
* on first use.
|
|
8
|
+
*
|
|
9
|
+
* Future: migrate to DID/DWN-based auth (see https://github.com/enboxorg/enbox/issues/546).
|
|
10
|
+
*/
|
|
11
|
+
export class AdminPasskeyStore {
|
|
12
|
+
static #tableName = 'adminPasskeys';
|
|
13
|
+
#db;
|
|
14
|
+
constructor(dialect) {
|
|
15
|
+
this.#db = new Kysely({ dialect });
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates and initializes an `AdminPasskeyStore` instance.
|
|
19
|
+
* Creates the `adminPasskeys` table if it does not already exist.
|
|
20
|
+
*/
|
|
21
|
+
static async create(dialect) {
|
|
22
|
+
const store = new AdminPasskeyStore(dialect);
|
|
23
|
+
await store.#initialize();
|
|
24
|
+
return store;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Verifies that the required table exists. Throws a clear error directing
|
|
28
|
+
* the caller to run server migrations first.
|
|
29
|
+
*/
|
|
30
|
+
async #initialize() {
|
|
31
|
+
try {
|
|
32
|
+
await sql `SELECT 1 FROM ${sql.table(AdminPasskeyStore.#tableName)} LIMIT 0`.execute(this.#db);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new Error(`AdminPasskeyStore: table '${AdminPasskeyStore.#tableName}' does not exist. Run server migrations before starting.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Stores a new passkey credential.
|
|
40
|
+
*/
|
|
41
|
+
async save(record) {
|
|
42
|
+
await this.#db
|
|
43
|
+
.insertInto(AdminPasskeyStore.#tableName)
|
|
44
|
+
.values({
|
|
45
|
+
id: record.id,
|
|
46
|
+
name: record.name,
|
|
47
|
+
publicKey: record.publicKey,
|
|
48
|
+
counter: record.counter,
|
|
49
|
+
transports: record.transports,
|
|
50
|
+
createdAt: record.createdAt,
|
|
51
|
+
lastUsedAt: record.lastUsedAt ?? null,
|
|
52
|
+
})
|
|
53
|
+
.execute();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Retrieves a passkey by its credential ID.
|
|
57
|
+
*/
|
|
58
|
+
async getById(id) {
|
|
59
|
+
const row = await this.#db
|
|
60
|
+
.selectFrom(AdminPasskeyStore.#tableName)
|
|
61
|
+
.selectAll()
|
|
62
|
+
.where('id', '=', id)
|
|
63
|
+
.executeTakeFirst();
|
|
64
|
+
if (!row) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return this.#toRecord(row);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns all registered passkeys, ordered by creation date (newest first).
|
|
71
|
+
*/
|
|
72
|
+
async list() {
|
|
73
|
+
const rows = await this.#db
|
|
74
|
+
.selectFrom(AdminPasskeyStore.#tableName)
|
|
75
|
+
.selectAll()
|
|
76
|
+
.orderBy('createdAt', 'desc')
|
|
77
|
+
.execute();
|
|
78
|
+
return rows.map((row) => this.#toRecord(row));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns the count of registered passkeys.
|
|
82
|
+
*/
|
|
83
|
+
async count() {
|
|
84
|
+
const result = await this.#db
|
|
85
|
+
.selectFrom(AdminPasskeyStore.#tableName)
|
|
86
|
+
.select(this.#db.fn.countAll().as('count'))
|
|
87
|
+
.executeTakeFirstOrThrow();
|
|
88
|
+
return Number(result.count);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Updates the counter and last-used timestamp after a successful authentication.
|
|
92
|
+
*/
|
|
93
|
+
async updateCounter(id, counter) {
|
|
94
|
+
await this.#db
|
|
95
|
+
.updateTable(AdminPasskeyStore.#tableName)
|
|
96
|
+
.set({
|
|
97
|
+
counter,
|
|
98
|
+
lastUsedAt: new Date().toISOString(),
|
|
99
|
+
})
|
|
100
|
+
.where('id', '=', id)
|
|
101
|
+
.execute();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Deletes a passkey by its credential ID.
|
|
105
|
+
* @returns `true` if the passkey was found and deleted.
|
|
106
|
+
*/
|
|
107
|
+
async delete(id) {
|
|
108
|
+
const result = await this.#db
|
|
109
|
+
.deleteFrom(AdminPasskeyStore.#tableName)
|
|
110
|
+
.where('id', '=', id)
|
|
111
|
+
.executeTakeFirstOrThrow();
|
|
112
|
+
return Number(result.numDeletedRows) > 0;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Closes the underlying database connection.
|
|
116
|
+
*/
|
|
117
|
+
async close() {
|
|
118
|
+
await this.#db.destroy();
|
|
119
|
+
}
|
|
120
|
+
#toRecord(row) {
|
|
121
|
+
return {
|
|
122
|
+
id: row.id,
|
|
123
|
+
name: row.name,
|
|
124
|
+
publicKey: row.publicKey,
|
|
125
|
+
counter: Number(row.counter),
|
|
126
|
+
transports: row.transports,
|
|
127
|
+
createdAt: row.createdAt,
|
|
128
|
+
lastUsedAt: row.lastUsedAt ?? null,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=admin-passkey-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-passkey-store.js","sourceRoot":"","sources":["../../../../src/admin/admin-passkey-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages short-lived sessions for admin passkey authentication.
|
|
3
|
+
*
|
|
4
|
+
* Sessions are opaque hex tokens stored in an in-memory `Map`. They are
|
|
5
|
+
* validated in {@link validateAdminAuth} as an alternative to the static
|
|
6
|
+
* bearer token. Expired sessions are lazily pruned on every create/validate
|
|
7
|
+
* call and periodically via a cleanup interval.
|
|
8
|
+
*
|
|
9
|
+
* Future: migrate to DID/DWN-based auth (see https://github.com/enboxorg/enbox/issues/546).
|
|
10
|
+
*/
|
|
11
|
+
export declare class AdminSessionManager {
|
|
12
|
+
#private;
|
|
13
|
+
constructor(ttlSeconds?: number);
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new session and returns the opaque token.
|
|
16
|
+
*/
|
|
17
|
+
create(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Validates a session token. Returns `true` if the token is valid and not expired.
|
|
20
|
+
*/
|
|
21
|
+
validate(token: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Revokes a session token.
|
|
24
|
+
*/
|
|
25
|
+
revoke(token: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Returns the number of active (non-expired) sessions.
|
|
28
|
+
*/
|
|
29
|
+
get size(): number;
|
|
30
|
+
/**
|
|
31
|
+
* Stops the periodic cleanup timer.
|
|
32
|
+
*/
|
|
33
|
+
destroy(): void;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=admin-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-session.d.ts","sourceRoot":"","sources":["../../../../src/admin/admin-session.ts"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,qBAAa,mBAAmB;;gBAUlB,UAAU,CAAC,EAAE,MAAM;IAK/B;;OAEG;IACI,MAAM,IAAI,MAAM;IAcvB;;OAEG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAcvC;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;OAEG;IACI,OAAO,IAAI,IAAI;CAyBvB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Manages short-lived sessions for admin passkey authentication.
|
|
4
|
+
*
|
|
5
|
+
* Sessions are opaque hex tokens stored in an in-memory `Map`. They are
|
|
6
|
+
* validated in {@link validateAdminAuth} as an alternative to the static
|
|
7
|
+
* bearer token. Expired sessions are lazily pruned on every create/validate
|
|
8
|
+
* call and periodically via a cleanup interval.
|
|
9
|
+
*
|
|
10
|
+
* Future: migrate to DID/DWN-based auth (see https://github.com/enboxorg/enbox/issues/546).
|
|
11
|
+
*/
|
|
12
|
+
export class AdminSessionManager {
|
|
13
|
+
/** Default session time-to-live: 24 hours (in seconds). */
|
|
14
|
+
static #DEFAULT_TTL_SECONDS = 86400;
|
|
15
|
+
/** Cleanup runs every 10 minutes. */
|
|
16
|
+
static #CLEANUP_INTERVAL_MS = 10 * 60 * 1000;
|
|
17
|
+
#sessions = new Map();
|
|
18
|
+
#ttlMs;
|
|
19
|
+
#cleanupInterval;
|
|
20
|
+
constructor(ttlSeconds) {
|
|
21
|
+
this.#ttlMs = (ttlSeconds ?? AdminSessionManager.#DEFAULT_TTL_SECONDS) * 1000;
|
|
22
|
+
this.#startCleanup();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new session and returns the opaque token.
|
|
26
|
+
*/
|
|
27
|
+
create() {
|
|
28
|
+
this.#prune();
|
|
29
|
+
const token = randomBytes(32).toString('hex');
|
|
30
|
+
const now = Date.now();
|
|
31
|
+
this.#sessions.set(token, {
|
|
32
|
+
token,
|
|
33
|
+
createdAt: now,
|
|
34
|
+
expiresAt: now + this.#ttlMs,
|
|
35
|
+
});
|
|
36
|
+
return token;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validates a session token. Returns `true` if the token is valid and not expired.
|
|
40
|
+
*/
|
|
41
|
+
validate(token) {
|
|
42
|
+
const entry = this.#sessions.get(token);
|
|
43
|
+
if (!entry) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (Date.now() >= entry.expiresAt) {
|
|
47
|
+
this.#sessions.delete(token);
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Revokes a session token.
|
|
54
|
+
*/
|
|
55
|
+
revoke(token) {
|
|
56
|
+
this.#sessions.delete(token);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Returns the number of active (non-expired) sessions.
|
|
60
|
+
*/
|
|
61
|
+
get size() {
|
|
62
|
+
return this.#sessions.size;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Stops the periodic cleanup timer.
|
|
66
|
+
*/
|
|
67
|
+
destroy() {
|
|
68
|
+
if (this.#cleanupInterval) {
|
|
69
|
+
clearInterval(this.#cleanupInterval);
|
|
70
|
+
this.#cleanupInterval = undefined;
|
|
71
|
+
}
|
|
72
|
+
this.#sessions.clear();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Removes all expired sessions.
|
|
76
|
+
*/
|
|
77
|
+
#prune() {
|
|
78
|
+
const now = Date.now();
|
|
79
|
+
for (const [token, entry] of this.#sessions) {
|
|
80
|
+
if (now >= entry.expiresAt) {
|
|
81
|
+
this.#sessions.delete(token);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
#startCleanup() {
|
|
86
|
+
this.#cleanupInterval = setInterval(() => {
|
|
87
|
+
this.#prune();
|
|
88
|
+
}, AdminSessionManager.#CLEANUP_INTERVAL_MS);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=admin-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-session.js","sourceRoot":"","sources":["../../../../src/admin/admin-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAcrC;;;;;;;;;GASG;AACH,MAAM,OAAO,mBAAmB;IAC9B,2DAA2D;IAC3D,MAAM,CAAU,oBAAoB,GAAG,KAAK,CAAC;IAC7C,qCAAqC;IACrC,MAAM,CAAU,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEtD,SAAS,GAA8B,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,CAAS;IACf,gBAAgB,CAA6C;IAE7D,YAAY,UAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;QAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,MAAM;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE;YACxB,KAAK;YACL,SAAS,EAAG,GAAG;YACf,SAAS,EAAG,GAAG,GAAG,IAAI,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,KAAa;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAa;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAS,EAAE;YAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../../src/admin/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOpD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,6EAA6E;IAC7E,KAAK,EAAG,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,EAAG,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG;IACzC,+BAA+B;IAC/B,EAAE,EAAG,MAAM,CAAC;IACZ,sDAAsD;IACtD,SAAS,EAAG,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,6CAA6C;IAC7C,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,yCAAyC;IACzC,UAAU,EAAG,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,QAAQ;;IASnB,OAAO;IAIP;;;;OAIG;WACiB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../../src/admin/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAOpD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,6EAA6E;IAC7E,KAAK,EAAG,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,EAAG,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG;IACzC,+BAA+B;IAC/B,EAAE,EAAG,MAAM,CAAC;IACZ,sDAAsD;IACtD,SAAS,EAAG,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAG,MAAM,CAAC;IAChB,6CAA6C;IAC7C,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,yCAAyC;IACzC,UAAU,EAAG,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,EAAG,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,QAAQ;;IASnB,OAAO;IAIP;;;;OAIG;WACiB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0BvG;;OAEG;IACU,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;OAEG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkDnG;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC;;;;;OAKG;IACU,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgE7E;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAOpC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Kysely } from 'kysely';
|
|
2
1
|
import log from 'loglevel';
|
|
2
|
+
import { Kysely, sql } from 'kysely';
|
|
3
3
|
import { escapeLikeWildcards } from '../lib/sql-utils.js';
|
|
4
4
|
export class AuditLog {
|
|
5
5
|
static #tableName = 'adminAuditLog';
|
|
@@ -26,53 +26,15 @@ export class AuditLog {
|
|
|
26
26
|
return auditLog;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* Verifies that the required table exists. Throws a clear error directing
|
|
30
|
+
* the caller to run server migrations first.
|
|
30
31
|
*/
|
|
31
32
|
async #initialize() {
|
|
32
|
-
await this.#db.schema
|
|
33
|
-
.createTable(AuditLog.#tableName)
|
|
34
|
-
.ifNotExists()
|
|
35
|
-
.addColumn('id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
36
|
-
.addColumn('timestamp', 'text', (col) => col.notNull())
|
|
37
|
-
.addColumn('actor', 'text', (col) => col.notNull())
|
|
38
|
-
.addColumn('action', 'text', (col) => col.notNull())
|
|
39
|
-
.addColumn('target', 'text')
|
|
40
|
-
.addColumn('detail', 'text')
|
|
41
|
-
.execute();
|
|
42
|
-
// Indices for common query patterns. Wrapped in try/catch because
|
|
43
|
-
// `CREATE INDEX IF NOT EXISTS` syntax varies across dialects.
|
|
44
|
-
try {
|
|
45
|
-
await this.#db.schema
|
|
46
|
-
.createIndex('index_audit_timestamp')
|
|
47
|
-
.ifNotExists()
|
|
48
|
-
.on(AuditLog.#tableName)
|
|
49
|
-
.column('timestamp')
|
|
50
|
-
.execute();
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// Index already exists.
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
await this.#db.schema
|
|
57
|
-
.createIndex('index_audit_target')
|
|
58
|
-
.ifNotExists()
|
|
59
|
-
.on(AuditLog.#tableName)
|
|
60
|
-
.column('target')
|
|
61
|
-
.execute();
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Index already exists.
|
|
65
|
-
}
|
|
66
33
|
try {
|
|
67
|
-
await this.#db
|
|
68
|
-
.createIndex('index_audit_action')
|
|
69
|
-
.ifNotExists()
|
|
70
|
-
.on(AuditLog.#tableName)
|
|
71
|
-
.column('action')
|
|
72
|
-
.execute();
|
|
34
|
+
await sql `SELECT 1 FROM ${sql.table(AuditLog.#tableName)} LIMIT 0`.execute(this.#db);
|
|
73
35
|
}
|
|
74
36
|
catch {
|
|
75
|
-
|
|
37
|
+
throw new Error(`AuditLog: table '${AuditLog.#tableName}' does not exist. Run server migrations before starting.`);
|
|
76
38
|
}
|
|
77
39
|
}
|
|
78
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../../../src/admin/audit-log.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../../../src/admin/audit-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
export { ActivityLog } from './activity-log.js';
|
|
2
2
|
export { AdminApi } from './admin-api.js';
|
|
3
|
+
export { AdminPasskeyStore } from './admin-passkey-store.js';
|
|
4
|
+
export { AdminSessionManager } from './admin-session.js';
|
|
3
5
|
export { AdminStore } from './admin-store.js';
|
|
4
6
|
export { AuditLog } from './audit-log.js';
|
|
5
7
|
export { validateAdminAuth } from './admin-auth.js';
|
|
6
8
|
export { WebhookManager } from './webhook-manager.js';
|
|
7
|
-
export type { AdminActivityEvent, AdminConnectionSnapshot, AdminHealthCheck, AdminMessageSummary, AdminProtocolSummary, AdminServerStats, AdminSubscriptionSnapshot, AdminTenantDetail, AdminTenantSummary, AdminWebhook, AdminWebhookInput, GlobalStats, HealthCheckResult, PaginatedResponse, RateLimitEntry, RateLimitStatus, RuntimeConfig, RuntimeConfigPatch, TenantExport, TenantListOptions, TenantQuota, TenantQuotaInput, TenantQuotaStatus, TenantStats, } from './types.js';
|
|
9
|
+
export type { AdminActivityEvent, AdminConnectionSnapshot, AdminHealthCheck, AdminMessageSummary, AdminPasskeySummary, AdminProtocolSummary, AdminServerStats, AdminSubscriptionSnapshot, AdminTenantDetail, AdminTenantSummary, AdminWebhook, AdminWebhookInput, GlobalStats, HealthCheckResult, PaginatedResponse, RateLimitEntry, RateLimitStatus, RuntimeConfig, RuntimeConfigPatch, TenantExport, TenantListOptions, TenantQuota, TenantQuotaInput, TenantQuotaStatus, TenantStats, } from './types.js';
|
|
10
|
+
export type { AdminAuthResult } from './admin-auth.js';
|
|
11
|
+
export type { AdminPasskeyRecord } from './admin-passkey-store.js';
|
|
8
12
|
export type { AuditEvent, AuditEventInput, AuditQueryOptions, AuditRetentionConfig } from './audit-log.js';
|
|
9
13
|
export type { WebhookPayload } from './webhook-manager.js';
|
|
10
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3G,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3G,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { ActivityLog } from './activity-log.js';
|
|
2
2
|
export { AdminApi } from './admin-api.js';
|
|
3
|
+
export { AdminPasskeyStore } from './admin-passkey-store.js';
|
|
4
|
+
export { AdminSessionManager } from './admin-session.js';
|
|
3
5
|
export { AdminStore } from './admin-store.js';
|
|
4
6
|
export { AuditLog } from './audit-log.js';
|
|
5
7
|
export { validateAdminAuth } from './admin-auth.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -303,4 +303,26 @@ export type AdminWebhookInput = {
|
|
|
303
303
|
events: string[];
|
|
304
304
|
secret?: string;
|
|
305
305
|
};
|
|
306
|
+
/**
|
|
307
|
+
* Summary of a registered passkey for the admin API response.
|
|
308
|
+
*
|
|
309
|
+
* Future: migrate to DID/DWN-based auth (see https://github.com/enboxorg/enbox/issues/546).
|
|
310
|
+
*/
|
|
311
|
+
export type AdminPasskeySummary = {
|
|
312
|
+
/** Base64url-encoded credential ID. */
|
|
313
|
+
id: string;
|
|
314
|
+
/** Human-readable name (e.g. "MacBook Touch ID"). */
|
|
315
|
+
name: string;
|
|
316
|
+
/** ISO-8601 timestamp when the passkey was registered. */
|
|
317
|
+
createdAt: string;
|
|
318
|
+
/** ISO-8601 timestamp of the most recent successful authentication. */
|
|
319
|
+
lastUsedAt: string | null;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* Request body for registering a new passkey.
|
|
323
|
+
*/
|
|
324
|
+
export type AdminPasskeyRegisterInput = {
|
|
325
|
+
/** Human-readable name for the passkey. */
|
|
326
|
+
name?: string;
|
|
327
|
+
};
|
|
306
328
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/admin/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/admin/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-manager.d.ts","sourceRoot":"","sources":["../../../../src/admin/webhook-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOlE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,0BAA0B;IAC1B,EAAE,EAAG,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,EAAG,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,EAAG,MAAM,CAAC;IACf,yCAAyC;IACzC,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,6BAA6B;IAC7B,IAAI,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,cAAc;;IAOzB,OAAO;IAIP;;OAEG;WACiB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"webhook-manager.d.ts","sourceRoot":"","sources":["../../../../src/admin/webhook-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOlE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,0BAA0B;IAC1B,EAAE,EAAG,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,EAAG,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,EAAG,MAAM,CAAC;IACf,yCAAyC;IACzC,MAAM,CAAC,EAAG,MAAM,CAAC;IACjB,6BAA6B;IAC7B,IAAI,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,cAAc;;IAOzB,OAAO;IAIP;;OAEG;WACiB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAwBrE;;OAEG;IACU,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBtE;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAgB5C;;OAEG;IACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAajD;;;OAGG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0FjF;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|