package surf import ( "net/http" "git.golem15.com/golem15/summercms/modules/bouncer" "git.golem15.com/golem15/summercms/modules/towel" ) // LocaleFromPrincipal overrides the header locale with the authenticated // principal's PreferredLocale when that value is non-empty. func LocaleFromPrincipal(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if p, ok := bouncer.User(r.Context()); ok && p.PreferredLocale != "" { r = r.WithContext(towel.WithLocale(r.Context(), p.PreferredLocale)) } next.ServeHTTP(w, r) }) }