From 85c476931c6b050d025b07d537ae5c5499dbf349 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 20 Feb 2024 12:10:00 +0800 Subject: [PATCH 01/12] Allow options to disable user deletion from the interface on app.ini --- custom/conf/app.example.ini | 4 ++ .../config-cheat-sheet.en-us.md | 5 ++ .../config-cheat-sheet.zh-cn.md | 5 ++ modules/setting/setting.go | 1 + modules/setting/user.go | 31 ++++++++++++ routers/web/web.go | 17 ++++++- templates/user/settings/account.tmpl | 48 ++++++++++--------- 7 files changed, 86 insertions(+), 25 deletions(-) create mode 100644 modules/setting/user.go diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 4aae1c497f3fa..4de678e7699e3 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -2605,3 +2605,7 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; storage type ;STORAGE_TYPE = local + +;[user] +; Disabled modules from user settings, could be deletion now, more moudels can be defined in future +;SETTING_DISABLED_MODULES = diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md index 415176d4fff28..cddc5b1be3f7e 100644 --- a/docs/content/administration/config-cheat-sheet.en-us.md +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -1416,6 +1416,11 @@ However, later updates removed those options, and now the only options are `gith However, if you want to use actions from other git server, you can use a complete URL in `uses` field, it's supported by Gitea (but not GitHub). Like `uses: https://gitea.com/actions/checkout@v4` or `uses: http://your-git-server/actions/checkout@v4`. +## User (`user`) + +- `SETTING_DISABLED_MODULES`:**_empty_** Disabled modules from user settings, could be `deletion` and more moudels can be defined in future. + - `deletion`: User cannot remove himself from the website. + ## Other (`other`) - `SHOW_FOOTER_VERSION`: **true**: Show Gitea and Go version information in the footer. diff --git a/docs/content/administration/config-cheat-sheet.zh-cn.md b/docs/content/administration/config-cheat-sheet.zh-cn.md index 01906930cb9e0..91f5acca3a1d9 100644 --- a/docs/content/administration/config-cheat-sheet.zh-cn.md +++ b/docs/content/administration/config-cheat-sheet.zh-cn.md @@ -1345,6 +1345,11 @@ PROXY_HOSTS = *.github.com 但是,如果您想要使用其他 Git 服务器中的操作,您可以在 `uses` 字段中使用完整的 URL,Gitea 支持此功能(GitHub 不支持)。 例如 `uses: https://gitea.com/actions/checkout@v4` 或 `uses: http://your-git-server/actions/checkout@v4`。 +## User (`user`) + +- `SETTING_DISABLED_MODULES`:**_empty_** 禁用的用户设置模块,当前允许为空或者 `deletion` 未来可以增加更多设置. + - `deletion`: 用户不能通过界面或者API删除他自己。 + ## 其他 (`other`) - `SHOW_FOOTER_VERSION`: **true**: 在页面底部显示Gitea的版本。 diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 6e7ce7e67fd3e..30c0b13cbff11 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -151,6 +151,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error { loadGitFrom(cfg) loadMirrorFrom(cfg) loadMarkupFrom(cfg) + loadUserFrom(cfg) loadOtherFrom(cfg) return nil } diff --git a/modules/setting/user.go b/modules/setting/user.go new file mode 100644 index 0000000000000..e2f7c023158fa --- /dev/null +++ b/modules/setting/user.go @@ -0,0 +1,31 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package setting + +import ( + "strings" + + "code.gitea.io/gitea/modules/container" +) + +const ( + UserDeletionKey = "deletion" +) + +// userSetting represents user settings +type userSetting struct { + content container.Set[string] +} + +func (s *userSetting) Enabled(module string) bool { + return !s.content.Contains(strings.ToLower(module)) +} + +var User userSetting + +func loadUserFrom(rootCfg ConfigProvider) { + sec := rootCfg.Section("user") + values := sec.Key("SETTING_DISABLED_MODULES").Strings(",") + User.content = container.SetOf(values...) +} diff --git a/routers/web/web.go b/routers/web/web.go index 864164972e0a6..0b6e2691ddf38 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -403,6 +403,14 @@ func registerRoutes(m *web.Route) { } } + userSettingModuleEnabled := func(module string) func(ctx *context.Context) { + return func(ctx *context.Context) { + if !setting.User.Enabled(module) { + ctx.Error(http.StatusNotFound) + } + } + } + addWebhookAddRoutes := func() { m.Get("/{type}/new", repo_setting.WebhooksNew) m.Post("/gitea/new", web.Bind(forms.NewWebhookForm{}), repo_setting.GiteaHooksNewPost) @@ -565,7 +573,7 @@ func registerRoutes(m *web.Route) { m.Combo("").Get(user_setting.Account).Post(web.Bind(forms.ChangePasswordForm{}), user_setting.AccountPost) m.Post("/email", web.Bind(forms.AddEmailForm{}), user_setting.EmailPost) m.Post("/email/delete", user_setting.DeleteEmail) - m.Post("/delete", user_setting.DeleteAccount) + m.Post("/delete", userSettingModuleEnabled(setting.UserDeletionKey), user_setting.DeleteAccount) }) m.Group("/appearance", func() { m.Get("", user_setting.Appearance) @@ -648,7 +656,12 @@ func registerRoutes(m *web.Route) { }) addWebhookEditRoutes() }, webhooksEnabled) - }, reqSignIn, ctxDataSet("PageIsUserSettings", true, "AllThemes", setting.UI.Themes, "EnablePackages", setting.Packages.Enabled)) + }, reqSignIn, ctxDataSet( + "PageIsUserSettings", true, + "AllThemes", setting.UI.Themes, + "EnablePackages", setting.Packages.Enabled, + "UserModules", &setting.User, + )) m.Group("/user", func() { m.Get("/activate", auth.Activate) diff --git a/templates/user/settings/account.tmpl b/templates/user/settings/account.tmpl index 7c6fd49a08cba..3bc42de340094 100644 --- a/templates/user/settings/account.tmpl +++ b/templates/user/settings/account.tmpl @@ -128,30 +128,32 @@ {{end}} -

- {{ctx.Locale.Tr "settings.delete_account"}} -

-
-
-

{{svg "octicon-alert"}} {{ctx.Locale.Tr "settings.delete_prompt" | Str2html}}

- {{if .UserDeleteWithComments}} -

{{ctx.Locale.Tr "settings.delete_with_all_comments" .UserDeleteWithCommentsMaxTime | Str2html}}

- {{end}} -
-
- {{template "base/disable_form_autofill"}} - {{.CsrfTokenHtml}} -
- - + {{if $.UserModules.Enabled "deletion"}} +

+ {{ctx.Locale.Tr "settings.delete_account"}} +

+
+
+

{{svg "octicon-alert"}} {{ctx.Locale.Tr "settings.delete_prompt" | Str2html}}

+ {{if .UserDeleteWithComments}} +

{{ctx.Locale.Tr "settings.delete_with_all_comments" .UserDeleteWithCommentsMaxTime | Str2html}}

+ {{end}}
-
- -
- -
+
+ {{template "base/disable_form_autofill"}} + {{.CsrfTokenHtml}} +
+ + +
+
+ +
+
+
+ {{end}}
{{if $.UserModules.Enabled "deletion"}} -

- {{ctx.Locale.Tr "settings.delete_account"}} -

-
-
-

{{svg "octicon-alert"}} {{ctx.Locale.Tr "settings.delete_prompt" | Str2html}}

- {{if .UserDeleteWithComments}} -

{{ctx.Locale.Tr "settings.delete_with_all_comments" .UserDeleteWithCommentsMaxTime | Str2html}}

- {{end}} -
-
- {{template "base/disable_form_autofill"}} - {{.CsrfTokenHtml}} -
- - -
-
- -
-
+

+ {{ctx.Locale.Tr "settings.delete_account"}} +

+
+
+

{{svg "octicon-alert"}} {{ctx.Locale.Tr "settings.delete_prompt" | Str2html}}

+ {{if .UserDeleteWithComments}} +

{{ctx.Locale.Tr "settings.delete_with_all_comments" .UserDeleteWithCommentsMaxTime | Str2html}}

+ {{end}}
+
+ {{template "base/disable_form_autofill"}} + {{.CsrfTokenHtml}} +
+ + +
+
+ +
+
+
{{end}}
From ea3bb13b68e7a90b3d89fde8b53e60c9ff0f579a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 21 Feb 2024 21:12:43 +0800 Subject: [PATCH 03/12] Remove unrelated change --- routers/web/web.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/routers/web/web.go b/routers/web/web.go index 057853ee30e96..864164972e0a6 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -648,11 +648,7 @@ func registerRoutes(m *web.Route) { }) addWebhookEditRoutes() }, webhooksEnabled) - }, reqSignIn, ctxDataSet( - "PageIsUserSettings", true, - "AllThemes", setting.UI.Themes, - "EnablePackages", setting.Packages.Enabled, - )) + }, reqSignIn, ctxDataSet("PageIsUserSettings", true, "AllThemes", setting.UI.Themes, "EnablePackages", setting.Packages.Enabled)) m.Group("/user", func() { m.Get("/activate", auth.Activate) From 9e928cacba8bf04df47c06bf13147457e3f43a78 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 21 Feb 2024 23:43:55 +0800 Subject: [PATCH 04/12] Move disabled modules from user -> admin section on app.ini --- custom/conf/app.example.ini | 6 ++-- .../config-cheat-sheet.en-us.md | 7 ++--- modules/setting/admin.go | 10 +++++++ modules/setting/setting.go | 1 - modules/setting/user.go | 29 ------------------- routers/web/user/setting/account.go | 4 +-- templates/user/settings/account.tmpl | 2 +- 7 files changed, 17 insertions(+), 42 deletions(-) delete mode 100644 modules/setting/user.go diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 4de678e7699e3..87278441fd813 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1470,6 +1470,8 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled +; Disabled modules from user settings, could be deletion now, more moudels can be defined in future +;USER_SETTING_DISABLED_MODULES = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2605,7 +2607,3 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; storage type ;STORAGE_TYPE = local - -;[user] -; Disabled modules from user settings, could be deletion now, more moudels can be defined in future -;SETTING_DISABLED_MODULES = diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md index cddc5b1be3f7e..b98436de65982 100644 --- a/docs/content/administration/config-cheat-sheet.en-us.md +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -517,6 +517,8 @@ And the following unique queues: - `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled - `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations. +- `USER_SETTING_DISABLED_MODULES`:**_empty_** Disabled modules from user settings, could be `deletion` and more moudels can be defined in future. + - `deletion`: User cannot remove himself from the website. ## Security (`security`) @@ -1416,11 +1418,6 @@ However, later updates removed those options, and now the only options are `gith However, if you want to use actions from other git server, you can use a complete URL in `uses` field, it's supported by Gitea (but not GitHub). Like `uses: https://gitea.com/actions/checkout@v4` or `uses: http://your-git-server/actions/checkout@v4`. -## User (`user`) - -- `SETTING_DISABLED_MODULES`:**_empty_** Disabled modules from user settings, could be `deletion` and more moudels can be defined in future. - - `deletion`: User cannot remove himself from the website. - ## Other (`other`) - `SHOW_FOOTER_VERSION`: **true**: Show Gitea and Go version information in the footer. diff --git a/modules/setting/admin.go b/modules/setting/admin.go index 2d2dd26de94ae..3cef42541a3ec 100644 --- a/modules/setting/admin.go +++ b/modules/setting/admin.go @@ -3,14 +3,24 @@ package setting +import "code.gitea.io/gitea/modules/container" + // Admin settings var Admin struct { DisableRegularOrgCreation bool DefaultEmailNotification string + UserDisabledModules container.Set[string] } func loadAdminFrom(rootCfg ConfigProvider) { mustMapSetting(rootCfg, "admin", &Admin) sec := rootCfg.Section("admin") Admin.DefaultEmailNotification = sec.Key("DEFAULT_EMAIL_NOTIFICATIONS").MustString("enabled") + + values := sec.Key("USER_SETTING_DISABLED_MODULES").Strings(",") + Admin.UserDisabledModules = container.SetOf(values...) } + +const ( + UserDeletionKey = "deletion" +) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 30c0b13cbff11..6e7ce7e67fd3e 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -151,7 +151,6 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error { loadGitFrom(cfg) loadMirrorFrom(cfg) loadMarkupFrom(cfg) - loadUserFrom(cfg) loadOtherFrom(cfg) return nil } diff --git a/modules/setting/user.go b/modules/setting/user.go deleted file mode 100644 index d4ad80d7f5b08..0000000000000 --- a/modules/setting/user.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2024 The Gitea Authors. All rights reserved. -// SPDX-License-Identifier: MIT - -package setting - -import ( - "code.gitea.io/gitea/modules/container" -) - -const ( - UserDeletionKey = "deletion" -) - -// userSetting represents user settings -type userSetting struct { - disabledModules container.Set[string] -} - -func (s *userSetting) Enabled(module string) bool { - return !s.disabledModules.Contains(module) -} - -var User userSetting - -func loadUserFrom(rootCfg ConfigProvider) { - sec := rootCfg.Section("user") - values := sec.Key("SETTING_DISABLED_MODULES").Strings(",") - User.disabledModules = container.SetOf(values...) -} diff --git a/routers/web/user/setting/account.go b/routers/web/user/setting/account.go index 47969ddcca5e8..ac9c2322d876e 100644 --- a/routers/web/user/setting/account.go +++ b/routers/web/user/setting/account.go @@ -233,7 +233,7 @@ func DeleteEmail(ctx *context.Context) { // DeleteAccount render user suicide page and response for delete user himself func DeleteAccount(ctx *context.Context) { - if !setting.User.Enabled(setting.UserDeletionKey) { + if setting.Admin.UserDisabledModules.Contains(setting.UserDeletionKey) { ctx.Error(http.StatusNotFound) return } @@ -304,7 +304,7 @@ func loadAccountData(ctx *context.Context) { ctx.Data["EmailNotificationsPreference"] = ctx.Doer.EmailNotificationsPreference ctx.Data["ActivationsPending"] = pendingActivation ctx.Data["CanAddEmails"] = !pendingActivation || !setting.Service.RegisterEmailConfirm - ctx.Data["UserModules"] = &setting.User + ctx.Data["UserDisabledModules"] = &setting.Admin.UserDisabledModules if setting.Service.UserDeleteWithCommentsMaxTime != 0 { ctx.Data["UserDeleteWithCommentsMaxTime"] = setting.Service.UserDeleteWithCommentsMaxTime.String() diff --git a/templates/user/settings/account.tmpl b/templates/user/settings/account.tmpl index ee247cdf4c18b..8fe150b53a88e 100644 --- a/templates/user/settings/account.tmpl +++ b/templates/user/settings/account.tmpl @@ -128,7 +128,7 @@ {{end}} - {{if $.UserModules.Enabled "deletion"}} + {{if $.UserDisabledModules.Contains "deletion"}}

{{ctx.Locale.Tr "settings.delete_account"}}

From 2ce4985a4ee49378c30bc97080ed111047d9695d Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 23 Feb 2024 14:41:08 +0800 Subject: [PATCH 05/12] Follow wxiaoguang's suggestion and this options will not only affect user settings, it can also affect others of user --- custom/conf/app.example.ini | 4 ++-- .../config-cheat-sheet.en-us.md | 2 +- .../config-cheat-sheet.zh-cn.md | 7 ++---- modules/setting/admin.go | 10 ++++---- routers/web/user/setting/account.go | 4 ++-- templates/user/settings/account.tmpl | 24 +++++++++---------- 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 87278441fd813..ab10c8bfdea17 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1470,8 +1470,8 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled -; Disabled modules from user settings, could be deletion now, more moudels can be defined in future -;USER_SETTING_DISABLED_MODULES = +;; Disabled features from user, could be deletion now, more features can be added in future +;USER_DISABLED_FEATURES = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md index b98436de65982..4b3ba43c45765 100644 --- a/docs/content/administration/config-cheat-sheet.en-us.md +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -517,7 +517,7 @@ And the following unique queues: - `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled - `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations. -- `USER_SETTING_DISABLED_MODULES`:**_empty_** Disabled modules from user settings, could be `deletion` and more moudels can be defined in future. +- `USER_DISABLED_FEATURES`: **_empty_** Disabled features from user, could be `deletion` and more features can be added in future. - `deletion`: User cannot remove himself from the website. ## Security (`security`) diff --git a/docs/content/administration/config-cheat-sheet.zh-cn.md b/docs/content/administration/config-cheat-sheet.zh-cn.md index 91f5acca3a1d9..5fe0a62215f54 100644 --- a/docs/content/administration/config-cheat-sheet.zh-cn.md +++ b/docs/content/administration/config-cheat-sheet.zh-cn.md @@ -497,6 +497,8 @@ Gitea 创建以下非唯一队列: - `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**:用户电子邮件通知的默认配置(用户可配置)。选项:enabled、onmention、disabled - `DISABLE_REGULAR_ORG_CREATION`: **false**:禁止普通(非管理员)用户创建组织。 +- `USER_DISABLED_FEATURES`:**_empty_** 禁用的用户特性,当前允许为空或者 `deletion`, 未来可以增加更多设置。 + - `deletion`: 用户不能通过界面或者API删除他自己。 ## 安全性 (`security`) @@ -1345,11 +1347,6 @@ PROXY_HOSTS = *.github.com 但是,如果您想要使用其他 Git 服务器中的操作,您可以在 `uses` 字段中使用完整的 URL,Gitea 支持此功能(GitHub 不支持)。 例如 `uses: https://gitea.com/actions/checkout@v4` 或 `uses: http://your-git-server/actions/checkout@v4`。 -## User (`user`) - -- `SETTING_DISABLED_MODULES`:**_empty_** 禁用的用户设置模块,当前允许为空或者 `deletion` 未来可以增加更多设置. - - `deletion`: 用户不能通过界面或者API删除他自己。 - ## 其他 (`other`) - `SHOW_FOOTER_VERSION`: **true**: 在页面底部显示Gitea的版本。 diff --git a/modules/setting/admin.go b/modules/setting/admin.go index 3cef42541a3ec..25feed24606ab 100644 --- a/modules/setting/admin.go +++ b/modules/setting/admin.go @@ -9,18 +9,18 @@ import "code.gitea.io/gitea/modules/container" var Admin struct { DisableRegularOrgCreation bool DefaultEmailNotification string - UserDisabledModules container.Set[string] + UserDisabledFeatures container.Set[string] } func loadAdminFrom(rootCfg ConfigProvider) { - mustMapSetting(rootCfg, "admin", &Admin) sec := rootCfg.Section("admin") + Admin.DisableRegularOrgCreation = sec.Key("DISABLE_REGULAR_ORG_CREATION").MustBool(false) Admin.DefaultEmailNotification = sec.Key("DEFAULT_EMAIL_NOTIFICATIONS").MustString("enabled") - values := sec.Key("USER_SETTING_DISABLED_MODULES").Strings(",") - Admin.UserDisabledModules = container.SetOf(values...) + values := sec.Key("USER_DISABLED_FEATURES").Strings(",") + Admin.UserDisabledFeatures = container.SetOf(values...) } const ( - UserDeletionKey = "deletion" + UserFeatureDeletion = "deletion" ) diff --git a/routers/web/user/setting/account.go b/routers/web/user/setting/account.go index ac9c2322d876e..659c3e29c1e25 100644 --- a/routers/web/user/setting/account.go +++ b/routers/web/user/setting/account.go @@ -233,7 +233,7 @@ func DeleteEmail(ctx *context.Context) { // DeleteAccount render user suicide page and response for delete user himself func DeleteAccount(ctx *context.Context) { - if setting.Admin.UserDisabledModules.Contains(setting.UserDeletionKey) { + if setting.Admin.UserDisabledFeatures.Contains(setting.UserFeatureDeletion) { ctx.Error(http.StatusNotFound) return } @@ -304,7 +304,7 @@ func loadAccountData(ctx *context.Context) { ctx.Data["EmailNotificationsPreference"] = ctx.Doer.EmailNotificationsPreference ctx.Data["ActivationsPending"] = pendingActivation ctx.Data["CanAddEmails"] = !pendingActivation || !setting.Service.RegisterEmailConfirm - ctx.Data["UserDisabledModules"] = &setting.Admin.UserDisabledModules + ctx.Data["UserDisabledFeatures"] = &setting.Admin.UserDisabledFeatures if setting.Service.UserDeleteWithCommentsMaxTime != 0 { ctx.Data["UserDeleteWithCommentsMaxTime"] = setting.Service.UserDeleteWithCommentsMaxTime.String() diff --git a/templates/user/settings/account.tmpl b/templates/user/settings/account.tmpl index 8fe150b53a88e..2b6b3c14e990b 100644 --- a/templates/user/settings/account.tmpl +++ b/templates/user/settings/account.tmpl @@ -128,7 +128,7 @@ {{end}} - {{if $.UserDisabledModules.Contains "deletion"}} + {{if not ($.UserDisabledFeatures.Contains "deletion")}}

{{ctx.Locale.Tr "settings.delete_account"}}

@@ -153,6 +153,17 @@ + + {{end}} @@ -167,15 +178,4 @@ {{template "base/modal_actions_confirm" .}} - - {{template "user/settings/layout_footer" .}} From 6ce54f15e47ea83e5f110a11ca6d8a77746486cb Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:52:39 +0800 Subject: [PATCH 06/12] Update custom/conf/app.example.ini --- custom/conf/app.example.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 4d094a8b630fa..c15e25f5692c1 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1474,7 +1474,7 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled -;; Disabled features from user, could be deletion now, more features can be added in future +;; Disabled features from user, could be "deletion" now, more features can be disabled in future ;USER_DISABLED_FEATURES = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; From a6db6981f77c16278bd5682175f3f8a62008b263 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:53:22 +0800 Subject: [PATCH 07/12] Update docs/content/administration/config-cheat-sheet.en-us.md --- docs/content/administration/config-cheat-sheet.en-us.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md index 4044c36ee8b53..6ab5b70658bd1 100644 --- a/docs/content/administration/config-cheat-sheet.en-us.md +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -519,7 +519,7 @@ And the following unique queues: - `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled - `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations. - `USER_DISABLED_FEATURES`: **_empty_** Disabled features from user, could be `deletion` and more features can be added in future. - - `deletion`: User cannot remove himself from the website. + - `deletion`: User cannot delete their own account. ## Security (`security`) From 944f202913d4b04561dc28220417c1f2f336df26 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:54:47 +0800 Subject: [PATCH 08/12] Update custom/conf/app.example.ini --- custom/conf/app.example.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index c15e25f5692c1..a221fb1b73afd 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1474,7 +1474,8 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled -;; Disabled features from user, could be "deletion" now, more features can be disabled in future +;; Disabled features for a user, could be "deletion", more features can be disabled in future +;; - deletion: a user cannot delete their own account ;USER_DISABLED_FEATURES = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; From fd6de0b225a6e20ef843a9971135d3b2f989950b Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:57:04 +0800 Subject: [PATCH 09/12] Update account.tmpl --- templates/user/settings/account.tmpl | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/templates/user/settings/account.tmpl b/templates/user/settings/account.tmpl index 69c385534787a..515e79d739f39 100644 --- a/templates/user/settings/account.tmpl +++ b/templates/user/settings/account.tmpl @@ -152,17 +152,16 @@ - - - From ee08d3ee7baf6b012881b876f2fc1ec89914b8eb Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:58:17 +0800 Subject: [PATCH 10/12] Update modules/setting/admin.go --- modules/setting/admin.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/setting/admin.go b/modules/setting/admin.go index 25feed24606ab..48a2ea9744552 100644 --- a/modules/setting/admin.go +++ b/modules/setting/admin.go @@ -16,9 +16,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") - - values := sec.Key("USER_DISABLED_FEATURES").Strings(",") - Admin.UserDisabledFeatures = container.SetOf(values...) + Admin.UserDisabledFeatures = container.SetOf(sec.Key("USER_DISABLED_FEATURES").Strings(",")...) } const ( From 92314ca53d02a843145a9c6f560b51b004076654 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:59:16 +0800 Subject: [PATCH 11/12] Update docs/content/administration/config-cheat-sheet.en-us.md --- docs/content/administration/config-cheat-sheet.en-us.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/administration/config-cheat-sheet.en-us.md b/docs/content/administration/config-cheat-sheet.en-us.md index 6ab5b70658bd1..643932de6c1be 100644 --- a/docs/content/administration/config-cheat-sheet.en-us.md +++ b/docs/content/administration/config-cheat-sheet.en-us.md @@ -518,7 +518,7 @@ And the following unique queues: - `DEFAULT_EMAIL_NOTIFICATIONS`: **enabled**: Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled - `DISABLE_REGULAR_ORG_CREATION`: **false**: Disallow regular (non-admin) users from creating organizations. -- `USER_DISABLED_FEATURES`: **_empty_** Disabled features from user, could be `deletion` and more features can be added in future. +- `USER_DISABLED_FEATURES`: **_empty_** Disabled features for users, could be `deletion` and more features can be added in future. - `deletion`: User cannot delete their own account. ## Security (`security`) From c6a9b1c12656eaad055407242b395da0e3edae8e Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Fri, 23 Feb 2024 14:59:33 +0800 Subject: [PATCH 12/12] Update custom/conf/app.example.ini --- custom/conf/app.example.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index a221fb1b73afd..5451537d02ccf 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -1474,7 +1474,7 @@ LEVEL = Info ;; ;; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled ;DEFAULT_EMAIL_NOTIFICATIONS = enabled -;; Disabled features for a user, could be "deletion", more features can be disabled in future +;; Disabled features for users, could be "deletion", more features can be disabled in future ;; - deletion: a user cannot delete their own account ;USER_DISABLED_FEATURES =