1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-08-01 17:38:37 +00:00

Store language in session to show the login page translated

This commit is contained in:
Frédéric Guillot 2018-01-18 21:53:31 -08:00
parent 6302c3b219
commit bdcc4134fa
7 changed files with 30 additions and 9 deletions

View file

@ -80,8 +80,12 @@ func (c *Context) LoggedUser() *model.User {
// UserLanguage get the locale used by the current logged user.
func (c *Context) UserLanguage() string {
user := c.LoggedUser()
return user.Language
if c.IsAuthenticated() {
user := c.LoggedUser()
return user.Language
}
return c.getContextStringValue(middleware.UserLanguageContextKey)
}
// Translate translates a message in the current language.
@ -145,7 +149,6 @@ func (c *Context) getContextStringValue(key *middleware.ContextKey) string {
return v.(string)
}
logger.Error("[Core:Context] Missing key: %s", key)
return ""
}

View file

@ -46,9 +46,10 @@ func (h *Handler) Use(f ControllerFunc) http.Handler {
ctx := NewContext(r, h.store, h.router, h.translator)
request := NewRequest(r)
response := NewResponse(w, r, h.template)
language := ctx.UserLanguage()
if ctx.IsAuthenticated() {
h.template.SetLanguage(ctx.UserLanguage())
if language != "" {
h.template.SetLanguage(language)
} else {
h.template.SetLanguage("en_US")
}

View file

@ -29,6 +29,9 @@ var (
// UserSessionTokenContextKey is the context key used to store the user session ID.
UserSessionTokenContextKey = &ContextKey{"UserSessionToken"}
// UserLanguageContextKey is the context key to store user language.
UserLanguageContextKey = &ContextKey{"UserLanguageContextKey"}
// SessionIDContextKey is the context key used to store the session ID.
SessionIDContextKey = &ContextKey{"SessionID"}

View file

@ -59,6 +59,7 @@ func (s *SessionMiddleware) Handler(next http.Handler) http.Handler {
ctx = context.WithValue(ctx, OAuth2StateContextKey, session.Data.OAuth2State)
ctx = context.WithValue(ctx, FlashMessageContextKey, session.Data.FlashMessage)
ctx = context.WithValue(ctx, FlashErrorMessageContextKey, session.Data.FlashErrorMessage)
ctx = context.WithValue(ctx, UserLanguageContextKey, session.Data.Language)
next.ServeHTTP(w, r.WithContext(ctx))
})
}

View file

@ -50,7 +50,15 @@ func (s *UserSessionMiddleware) Handler(next http.Handler) http.Handler {
func (s *UserSessionMiddleware) isPublicRoute(r *http.Request) bool {
route := mux.CurrentRoute(r)
switch route.GetName() {
case "login", "checkLogin", "stylesheet", "javascript", "oauth2Redirect", "oauth2Callback", "appIcon", "favicon", "webManifest":
case "login",
"checkLogin",
"stylesheet",
"javascript",
"oauth2Redirect",
"oauth2Callback",
"appIcon",
"favicon",
"webManifest":
return true
default:
return false