Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/**
|
|
* Central audit client for multi-chain-execution admin actions.
|
|
* Sends audit entries to dbis_core Admin Central API when DBIS_CENTRAL_URL and ADMIN_CENTRAL_API_KEY are set.
|
|
*/
|
|
|
|
const DBIS_CENTRAL_URL = process.env.DBIS_CENTRAL_URL?.replace(/\/$/, '');
|
|
const ADMIN_CENTRAL_API_KEY = process.env.ADMIN_CENTRAL_API_KEY;
|
|
const SERVICE_NAME = 'multi_chain_execution';
|
|
|
|
function isConfigured(): boolean {
|
|
return Boolean(DBIS_CENTRAL_URL && ADMIN_CENTRAL_API_KEY);
|
|
}
|
|
|
|
export interface CentralAuditPayload {
|
|
employeeId: string;
|
|
action: string;
|
|
permission: string;
|
|
resourceType: string;
|
|
resourceId?: string;
|
|
outcome?: string;
|
|
metadata?: Record<string, unknown>;
|
|
ipAddress?: string;
|
|
userAgent?: string;
|
|
}
|
|
|
|
export async function appendCentralAudit(payload: CentralAuditPayload): Promise<void> {
|
|
if (!isConfigured()) return;
|
|
|
|
try {
|
|
const res = await fetch(`${DBIS_CENTRAL_URL}/api/admin/central/audit`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-Admin-Central-Key': ADMIN_CENTRAL_API_KEY!,
|
|
},
|
|
body: JSON.stringify({
|
|
employeeId: payload.employeeId,
|
|
action: payload.action,
|
|
permission: payload.permission ?? 'admin:action',
|
|
resourceType: payload.resourceType,
|
|
resourceId: payload.resourceId,
|
|
project: 'multi-chain-execution',
|
|
service: SERVICE_NAME,
|
|
outcome: payload.outcome ?? 'success',
|
|
metadata: payload.metadata,
|
|
ipAddress: payload.ipAddress,
|
|
userAgent: payload.userAgent,
|
|
}),
|
|
});
|
|
if (!res.ok) {
|
|
console.warn(`[central-audit] POST failed: ${res.status} ${await res.text()}`);
|
|
}
|
|
} catch (err) {
|
|
console.warn('[central-audit] append failed:', err instanceof Error ? err.message : err);
|
|
}
|
|
}
|