]> source.dussan.org Git - gitea.git/commitdiff
Reset locale on login (#17734) (#18100)
authorzeripath <art27@cantab.net>
Sat, 25 Dec 2021 13:31:23 +0000 (13:31 +0000)
committerGitHub <noreply@github.com>
Sat, 25 Dec 2021 13:31:23 +0000 (21:31 +0800)
Backport #17734

When logging in reset the user's locale to ensure that it matches their
preferred locale.

Fix #15612

Signed-off-by: Andrew Thornton <art27@cantab.net>
modules/context/api.go
modules/context/context.go
routers/web/user/auth.go

index 7fff8e83466fe21600598bb16d16a661639ba285..9b1e27f93c633c274b2a7274b3044800fa59a46b 100644 (file)
@@ -223,6 +223,9 @@ func APIAuth(authMethod auth.Auth) func(*APIContext) {
                // Get user from session if logged in.
                ctx.User = authMethod.Verify(ctx.Req, ctx.Resp, ctx, ctx.Session)
                if ctx.User != nil {
+                       if ctx.Locale.Language() != ctx.User.Language {
+                               ctx.Locale = middleware.Locale(ctx.Resp, ctx.Req)
+                       }
                        ctx.IsBasicAuth = ctx.Data["AuthedMethod"].(string) == new(auth.Basic).Name()
                        ctx.IsSigned = true
                        ctx.Data["IsSigned"] = ctx.IsSigned
index 82771b0c244d5f853c7b7731609c7edf2404be0d..5dcf2e7551b015124d65407b30d1cf3ed6d0500f 100644 (file)
@@ -642,6 +642,9 @@ func Auth(authMethod auth.Auth) func(*Context) {
        return func(ctx *Context) {
                ctx.User = authMethod.Verify(ctx.Req, ctx.Resp, ctx, ctx.Session)
                if ctx.User != nil {
+                       if ctx.Locale.Language() != ctx.User.Language {
+                               ctx.Locale = middleware.Locale(ctx.Resp, ctx.Req)
+                       }
                        ctx.IsBasicAuth = ctx.Data["AuthedMethod"].(string) == new(auth.Basic).Name()
                        ctx.IsSigned = true
                        ctx.Data["IsSigned"] = ctx.IsSigned
index 12a688b8232fd9804583b1cb243c44bc1d2dc4a4..72b4d82d3099843c4bd8177234af45be2fa0009f 100644 (file)
@@ -584,6 +584,10 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
 
        middleware.SetLocaleCookie(ctx.Resp, u.Language, 0)
 
+       if ctx.Locale.Language() != u.Language {
+               ctx.Locale = middleware.Locale(ctx.Resp, ctx.Req)
+       }
+
        // Clear whatever CSRF has right now, force to generate a new one
        middleware.DeleteCSRFCookie(ctx.Resp)