- Move remaining beach packages and embedded admin assets\n- Rewrite framework, example, build, and gate paths
20 lines
586 B
Go
20 lines
586 B
Go
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)
|
|
})
|
|
}
|