diff --git a/auth.go b/auth.go index 52354e9..18bc878 100644 --- a/auth.go +++ b/auth.go @@ -2,6 +2,8 @@ package prism import ( "context" + "git.wisehodl.dev/jay/go-mana-component" + "log/slog" "sync" "time" @@ -30,14 +32,18 @@ type AuthManager struct { inbox <-chan InboxMessage events <-chan OutboundPoolEvent - ctx context.Context - cancel context.CancelFunc - mu sync.Mutex - wg sync.WaitGroup + ctx context.Context + cancel context.CancelFunc + mu sync.Mutex + wg sync.WaitGroup + handler slog.Handler + logger *slog.Logger } func NewAuthManager(e *Envoy, respond func(string) ([]byte, error)) *AuthManager { - ctx, cancel := context.WithCancel(e.Context()) + ctx, cancel := context.WithCancel( + component.MustExtend(e.Context(), "auth_manager")) + m := &AuthManager{ envoy: e, respond: respond, @@ -46,6 +52,13 @@ func NewAuthManager(e *Envoy, respond func(string) ([]byte, error)) *AuthManager ctx: ctx, cancel: cancel, } + + if e.Handler() != nil { + comp := component.FromContext(ctx) + m.handler = e.Handler() + m.logger = slog.New(m.handler).With(slog.Any("component", comp)) + } + m.wg.Go(m.routeInbox) m.wg.Go(m.handleEvents) return m @@ -85,6 +98,10 @@ func (m *AuthManager) routeInbox() { continue } + if m.logger != nil { + m.logger.Info("responded to auth", "challenge", challenge) + } + m.envoy.Observer().Record(msg.ID, AuthResponseSent{At: time.Now()}) } } diff --git a/request.go b/request.go index e8801c6..2e2be13 100644 --- a/request.go +++ b/request.go @@ -157,11 +157,11 @@ func NewRequestManager(e *Envoy) *RequestManager { ctx: ctx, cancel: cancel, observer: e.Observer(), - handler: e.Handler(), } - if m.handler != nil { + if e.Handler() != nil { comp := component.FromContext(ctx) + m.handler = e.Handler() m.logger = slog.New(m.handler).With(slog.Any("component", comp)) }