]> source.dussan.org Git - gitea.git/commitdiff
User Settings: Ignore empty language codes & validate (#13755)
author6543 <6543@obermui.de>
Fri, 4 Dec 2020 06:20:30 +0000 (07:20 +0100)
committerGitHub <noreply@github.com>
Fri, 4 Dec 2020 06:20:30 +0000 (08:20 +0200)
integrations/privateactivity_test.go
integrations/user_test.go
integrations/xss_test.go
modules/auth/user_form.go
options/locale/locale_en-US.ini
routers/user/setting/profile.go

index e9beb7c116a55e66e7840a5704caf73d3bea07a4..bfdc2ef53e0c7f43bb7f942f9f91af6edf90be22 100644 (file)
@@ -45,7 +45,7 @@ func testPrivateActivityHelperEnablePrivateActivity(t *testing.T) {
                "_csrf":                 GetCSRF(t, session, "/user/settings"),
                "name":                  privateActivityTestUser,
                "email":                 privateActivityTestUser + "@example.com",
-               "language":              "en-us",
+               "language":              "en-US",
                "keep_activity_private": "1",
        })
        session.MakeRequest(t, req, http.StatusFound)
index 999a182bfd3cb5be2170e9ecd8ef5146b8af5cec..199d5e242f8226c40351ac0c0dbebb0d63d15ecc 100644 (file)
@@ -30,7 +30,7 @@ func TestRenameUsername(t *testing.T) {
                "_csrf":    GetCSRF(t, session, "/user/settings"),
                "name":     "newUsername",
                "email":    "user2@example.com",
-               "language": "en-us",
+               "language": "en-US",
        })
        session.MakeRequest(t, req, http.StatusFound)
 
@@ -100,7 +100,7 @@ func TestRenameReservedUsername(t *testing.T) {
                        "_csrf":    GetCSRF(t, session, "/user/settings"),
                        "name":     reservedUsername,
                        "email":    "user2@example.com",
-                       "language": "en-us",
+                       "language": "en-US",
                })
                resp := session.MakeRequest(t, req, http.StatusFound)
 
index 425165dccc845626eff40e40c837ee3f1a5dcd61..2d83e1e106007d833567e203bcf9b4a763c1f667 100644 (file)
@@ -24,7 +24,7 @@ func TestXSSUserFullName(t *testing.T) {
                "name":      user.Name,
                "full_name": fullName,
                "email":     user.Email,
-               "language":  "en-us",
+               "language":  "en-US",
        })
        session.MakeRequest(t, req, http.StatusFound)
 
index 32fde1570ead2cd5d506f94fb5574d3edf638550..c0aafec9e4a9e2fd6168fa189709bfbf02a20fbb 100644 (file)
@@ -202,7 +202,7 @@ type UpdateProfileForm struct {
        KeepEmailPrivate    bool
        Website             string `binding:"ValidUrl;MaxSize(255)"`
        Location            string `binding:"MaxSize(50)"`
-       Language            string `binding:"Size(5)"`
+       Language            string
        Description         string `binding:"MaxSize(255)"`
        KeepActivityPrivate bool
 }
index 1500bf73e908429a8a1fc5c0603d9b445e88a354..ff54bcd3b35aa71f30dffd4ac669dcfd379ab276 100644 (file)
@@ -440,6 +440,7 @@ website = Website
 location = Location
 update_theme = Update Theme
 update_profile = Update Profile
+update_language_not_found = Language '%s' is not available.
 update_profile_success = Your profile has been updated.
 change_username = Your username has been changed.
 change_username_prompt = Note: username changes also change your account URL.
index 6653230a394295cc9db2ca483e2e4a65c8e6e382..74cc96cb852bf21656a78b7269c232eb54b7b68f 100644 (file)
@@ -19,6 +19,7 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
 
        "github.com/unknwon/i18n"
 )
@@ -94,7 +95,14 @@ func ProfilePost(ctx *context.Context, form auth.UpdateProfileForm) {
        ctx.User.KeepEmailPrivate = form.KeepEmailPrivate
        ctx.User.Website = form.Website
        ctx.User.Location = form.Location
-       ctx.User.Language = form.Language
+       if len(form.Language) != 0 {
+               if !util.IsStringInSlice(form.Language, setting.Langs) {
+                       ctx.Flash.Error(ctx.Tr("settings.update_language_not_found", form.Language))
+                       ctx.Redirect(setting.AppSubURL + "/user/settings")
+                       return
+               }
+               ctx.User.Language = form.Language
+       }
        ctx.User.Description = form.Description
        ctx.User.KeepActivityPrivate = form.KeepActivityPrivate
        if err := models.UpdateUserSetting(ctx.User); err != nil {