fix(collaboration): configure federation from existing deployment settings

This commit is contained in:
2026-10-02 16:58:57 +02:00
parent d7382e7319
commit 09a002d600
11 changed files with 146 additions and 15 deletions

View File

@@ -7,6 +7,7 @@ import { FederationKey, Headers, instanceUrl, safeTransport, signedHeaders, Tran
type Options = {
apiUrl: string; enabled: boolean;
disabledReason?: string;
seal: (value: string) => any; unseal: (value: any) => string;
transport?: Transport;
}
@@ -22,7 +23,7 @@ export class FederationService {
this.transport = options.transport || safeTransport
}
enabled() {
if (!this.options.enabled) fail("Der Betreiber muss die Föderation zuerst aktivieren", 503)
if (!this.options.enabled) fail(this.options.disabledReason || "Der Betreiber muss die Föderation zuerst aktivieren", 503)
instanceUrl(this.origin)
}
async keys() {
@@ -71,7 +72,7 @@ export class FederationService {
VALUES (${ctx.tenantId},${origin},${instanceId},${keyId},${publicKey}) ON CONFLICT(tenant_id,origin) DO UPDATE SET active=true,updated_at=now()`)
}
}
return { enabled: this.options.enabled, origin: this.origin, partners: (await rows(this.service.db,
return { enabled: this.options.enabled, disabledReason: this.options.disabledReason, origin: this.origin, partners: (await rows(this.service.db,
sql`SELECT origin,active,public_key FROM collaboration_partners WHERE tenant_id=${ctx.tenantId} ORDER BY origin`)).map(p => ({ origin: p.origin, active: p.active, fingerprint: hash(p.public_key) })) }
}
async call(tenantId: number, origin: string, action: string, payload: any) {