package auth

import (
	"net/http"

	"github.com/rs/zerolog"
)

func LogUserHandler(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		log := zerolog.Ctx(r.Context())
		if o := RequestAuthClaimsAsLogObjectMarshaler(r); o != nil {
			log.UpdateContext(func(c zerolog.Context) zerolog.Context {
				return c.Object("identity", o)
			})
		} else {
			log.UpdateContext(func(c zerolog.Context) zerolog.Context {
				return c.Str("identity", "anonymous")
			})
		}
		next.ServeHTTP(w, r)
	})
}