NextMyDay/internal/core/middleware/audit.go
Claus Lohmar d11e14295b feat(core): add the store, identity plumbing and the door (SPEC-003/004)
- store: SQLite (WAL, foreign keys ON, CGO-free driver) + the embedded
  migration runner; each module's migrations are name-prefixed (D-012)
- audit: the append-only audit log; the actor threads via context (R-1)
- users: the user_id/GUID/email anchors (D-013)
- config: the YAML settings file (D-035) + validation
- httpx: cookies · loopback detection · trusted-proxy XFF · CSRF · security
  headers · redaction
- middleware: correlation id · audit · rate limiting
- mail: the invite/recovery mailer seam
- server: the core DOOR — the resolution switch, the dispatch registry
  (RegisterModule), the role gates, /setup · enroll/login · recovery flows,
  the reserved `static` workflow, and the loopback-only bootstrap (D-025)
2026-10-14 10:53:51 +00:00

18 lines
580 B
Go

package middleware
import (
"context"
"git.lohmar.co.uk/cclohmar/NextMyDay/internal/core/audit"
)
// AttachAudit attaches the request's audit metadata to ctx (SPEC-003 §4, ruling
// R-1). The door calls it before dispatching to a module; every service then
// writes its audit rows with the right actor · client IP · correlation.
func AttachAudit(ctx context.Context, actorUserID int64, clientIP, correlationID string) context.Context {
return audit.WithMeta(ctx, audit.Meta{
ActorUserID: actorUserID,
ClientIP: clientIP,
CorrelationID: correlationID,
})
}