Skip to content

System-User

Konzept

Fuer programmatische Aenderungen (Hooks, Jobs, Migrations) gibt es einen eingebauten System-User. Dieser hat die Rolle "system" die kein echter User haben kann.

const SYSTEM_USER: PipelineUser = {
id: 0,
tenantId: 0, // wird pro Aufruf gesetzt
roles: ["system"],
};

Anwendungsfall

Ein PostSave-Hook will Config aendern die der ausloesende User nicht aendern darf:

r.hook("postSave", "orders.order", async (result, ctx) => {
const total = await calculateMonthlyTotal(ctx.db, result.data.tenantId);
// User A hat den Write ausgeloest, darf aber billing.monthlyTotal nicht aendern
await ctx.config.set("billing.monthlyTotal", total, { as: SYSTEM_USER });
});

Audit-Log

  • Write von User A → User A steht im Audit-Log
  • Config-Aenderung im Hook → system steht im Audit-Log
  • Kein Bypass, kein Sonderweg — "system" Rolle hat einfach Zugriff