Fix language dynamism to align with user's and context preference
This commit is contained in:
parent
f2cdc1a586
commit
08be1a1355
@ -11,6 +11,9 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/cortezaproject/corteza/server/pkg/locale"
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"github.com/go-chi/jwtauth"
|
||||
oauth2errors "github.com/go-oauth2/oauth2/v4/errors"
|
||||
"github.com/lestrrat-go/jwx/jwa"
|
||||
@ -457,6 +460,12 @@ func (h AuthHandlers) handleTokenRequest(req *request.AuthReq, client *types.Aut
|
||||
response["avatarID"] = strconv.FormatUint(user.Meta.AvatarID, 10)
|
||||
}
|
||||
|
||||
if h.Locale.HasLanguage(language.Make(user.Meta.PreferredLanguage)) {
|
||||
response["preferred_language"] = user.Meta.PreferredLanguage
|
||||
} else {
|
||||
response["preferred_language"] = locale.GetAcceptLanguageFromContext(req.Context()).String()
|
||||
}
|
||||
|
||||
if user.Labels != nil {
|
||||
response["labels"] = user.Labels
|
||||
} else {
|
||||
|
||||
@ -12,6 +12,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"github.com/cortezaproject/corteza/server/system/service"
|
||||
|
||||
"github.com/cortezaproject/corteza/server/auth/external"
|
||||
@ -111,6 +113,7 @@ type (
|
||||
localeService interface {
|
||||
NS(ctx context.Context, ns string) func(key string, rr ...string) string
|
||||
T(ctx context.Context, ns, key string, rr ...string) string
|
||||
HasLanguage(lang language.Tag) bool
|
||||
LocalizedList(ctx context.Context) []*locale.Language
|
||||
}
|
||||
|
||||
@ -223,12 +226,23 @@ func (h *AuthHandlers) handle(fn handlerFn) http.HandlerFunc {
|
||||
|
||||
// make sure user (identity) is part of the context
|
||||
// so we can properly identify ourselves when interacting
|
||||
// with services
|
||||
// with services, and set user's preferred language
|
||||
if req.AuthUser != nil && !req.AuthUser.PendingMFA() {
|
||||
req.Request = req.Request.Clone(auth.SetIdentityToContext(
|
||||
req.Context(),
|
||||
auth.Authenticated(req.AuthUser.User.ID, req.AuthUser.User.Roles()...),
|
||||
))
|
||||
|
||||
userPreferredLanguage := language.Make(req.AuthUser.User.Meta.PreferredLanguage)
|
||||
|
||||
// set user's preferred language
|
||||
if h.Locale.HasLanguage(userPreferredLanguage) {
|
||||
ctx := req.Request.Context()
|
||||
ctx = locale.SetAcceptLanguageToContext(ctx, userPreferredLanguage)
|
||||
ctx = locale.SetContentLanguageToContext(ctx, userPreferredLanguage)
|
||||
|
||||
req.Request = req.Request.WithContext(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
// Alerts show for 1 session only!
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user