From 75efc51e98e5753e4059b559e42537e9fb7858b0 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Tue, 24 Feb 2026 23:46:08 +0800 Subject: [PATCH] Fix incorrect setting loading order (#36735) --- modules/base/tool_test.go | 4 +++- modules/setting/security.go | 1 - modules/setting/setting.go | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/base/tool_test.go b/modules/base/tool_test.go index b7365e40c4..85d28836f1 100644 --- a/modules/base/tool_test.go +++ b/modules/base/tool_test.go @@ -29,8 +29,10 @@ func TestShortSha(t *testing.T) { func TestVerifyTimeLimitCode(t *testing.T) { defer test.MockVariableValue(&setting.InstallLock, true)() initGeneralSecret := func(secret string) { - setting.InstallLock = true setting.CfgProvider, _ = setting.NewConfigProviderFromData(fmt.Sprintf(` +[security] +INTERNAL_TOKEN = dummy +INSTALL_LOCK = true [oauth2] JWT_SECRET = %s `, secret)) diff --git a/modules/setting/security.go b/modules/setting/security.go index 743df61681..a1fd0bce2e 100644 --- a/modules/setting/security.go +++ b/modules/setting/security.go @@ -109,7 +109,6 @@ func generateSaveInternalToken(rootCfg ConfigProvider) { func loadSecurityFrom(rootCfg ConfigProvider) { sec := rootCfg.Section("security") - InstallLock = HasInstallLock(rootCfg) LogInRememberDays = sec.Key("LOGIN_REMEMBER_DAYS").MustInt(31) SecretKey = loadSecret(sec, "SECRET_KEY_URI", "SECRET_KEY") if SecretKey == "" { diff --git a/modules/setting/setting.go b/modules/setting/setting.go index dc60d99bd6..f2b6274edc 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -108,6 +108,9 @@ func LoadCommonSettings() { // loadCommonSettingsFrom loads common configurations from a configuration provider. func loadCommonSettingsFrom(cfg ConfigProvider) error { + // a lot of logic depends on InstallLock value, so it must be loaded before any other settings + InstallLock = HasInstallLock(cfg) + // WARNING: don't change the sequence except you know what you are doing. loadRunModeFrom(cfg) loadLogGlobalFrom(cfg)