From ff2a3f4e3a39a645be12ac3417a4f86e7d8290b2 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Sat, 25 May 2024 12:20:58 +0200 Subject: [PATCH] fix(services): set SendNotificationEmailOnNewUser regression from 767e9634d3d02acab27f05e1783391c9c7f6292e. It changed the parsing of the [admin] section from being derived from the content of each key with mustMapSetting(rootCfg, "admin", &Admin) to explicitly listing all keys in the code. SEND_NOTIFICATION_EMAIL_ON_NEW_USER was not added and therefore ignored. As a consequence notifications of newly registered users were never sent. --- modules/setting/admin.go | 1 + modules/setting/admin_test.go | 32 ++++++++++++++++++++++++++++++++ release-notes/8.0.0/fix/3904.md | 1 + 3 files changed, 34 insertions(+) create mode 100644 modules/setting/admin_test.go create mode 100644 release-notes/8.0.0/fix/3904.md diff --git a/modules/setting/admin.go b/modules/setting/admin.go index 07b8ef0899..eed3aa22cf 100644 --- a/modules/setting/admin.go +++ b/modules/setting/admin.go @@ -20,6 +20,7 @@ func loadAdminFrom(rootCfg ConfigProvider) { sec := rootCfg.Section("admin") Admin.DisableRegularOrgCreation = sec.Key("DISABLE_REGULAR_ORG_CREATION").MustBool(false) Admin.DefaultEmailNotification = sec.Key("DEFAULT_EMAIL_NOTIFICATIONS").MustString("enabled") + Admin.SendNotificationEmailOnNewUser = sec.Key("SEND_NOTIFICATION_EMAIL_ON_NEW_USER").MustBool(false) Admin.UserDisabledFeatures = container.SetOf(sec.Key("USER_DISABLED_FEATURES").Strings(",")...) Admin.ExternalUserDisableFeatures = container.SetOf(sec.Key("EXTERNAL_USER_DISABLE_FEATURES").Strings(",")...) } diff --git a/modules/setting/admin_test.go b/modules/setting/admin_test.go new file mode 100644 index 0000000000..c0b4dfff69 --- /dev/null +++ b/modules/setting/admin_test.go @@ -0,0 +1,32 @@ +// Copyright The Forgejo Authors. +// SPDX-License-Identifier: MIT + +package setting + +import ( + "testing" + + "code.gitea.io/gitea/modules/container" + + "github.com/stretchr/testify/assert" +) + +func Test_loadAdminFrom(t *testing.T) { + iniStr := ` + [admin] + DISABLE_REGULAR_ORG_CREATION = true + DEFAULT_EMAIL_NOTIFICATIONS = z + SEND_NOTIFICATION_EMAIL_ON_NEW_USER = true + USER_DISABLED_FEATURES = a,b + EXTERNAL_USER_DISABLE_FEATURES = x,y + ` + cfg, err := NewConfigProviderFromData(iniStr) + assert.NoError(t, err) + loadAdminFrom(cfg) + + assert.EqualValues(t, true, Admin.DisableRegularOrgCreation) + assert.EqualValues(t, "z", Admin.DefaultEmailNotification) + assert.EqualValues(t, true, Admin.SendNotificationEmailOnNewUser) + assert.EqualValues(t, container.SetOf("a", "b"), Admin.UserDisabledFeatures) + assert.EqualValues(t, container.SetOf("x", "y"), Admin.ExternalUserDisableFeatures) +} diff --git a/release-notes/8.0.0/fix/3904.md b/release-notes/8.0.0/fix/3904.md new file mode 100644 index 0000000000..f1a934081b --- /dev/null +++ b/release-notes/8.0.0/fix/3904.md @@ -0,0 +1 @@ +- a v7.0.0 regression causing `[admin].SEND_NOTIFICATION_EMAIL_ON_NEW_USER=true` to always be ignored.