diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index 6a4e0ca02..1e77ff270 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -597,6 +597,8 @@ ACTIVE_CODE_LIVE_MINUTES = 180 RESET_PASSWD_CODE_LIVE_MINUTES = 180 ; Whether a new user needs to confirm their email when registering. REGISTER_EMAIL_CONFIRM = false +; Whether a new user needs to be confirmed manually after registration. (Requires `REGISTER_EMAIL_CONFIRM` to be disabled.) +REGISTER_MANUAL_CONFIRM = false ; List of domain names that are allowed to be used to register on a Gitea instance ; gitea.io,example.com EMAIL_DOMAIN_WHITELIST = diff --git a/docs/content/doc/advanced/config-cheat-sheet.en-us.md b/docs/content/doc/advanced/config-cheat-sheet.en-us.md index 2cd175dbf..e30e740f7 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.en-us.md +++ b/docs/content/doc/advanced/config-cheat-sheet.en-us.md @@ -422,6 +422,8 @@ relation to port exhaustion. process. - `REGISTER_EMAIL_CONFIRM`: **false**: Enable this to ask for mail confirmation of registration. Requires `Mailer` to be enabled. +- `REGISTER_MANUAL_CONFIRM`: **false**: Enable this to manually confirm new registrations. + Requires `REGISTER_EMAIL_CONFIRM` to be disabled. - `DISABLE_REGISTRATION`: **false**: Disable registration, after which only admin can create accounts for users. - `REQUIRE_EXTERNAL_REGISTRATION_PASSWORD`: **false**: Enable this to force externally created diff --git a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md index 9ba46e357..c1f7e836c 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md +++ b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md @@ -124,6 +124,7 @@ menu: - `ACTIVE_CODE_LIVE_MINUTES`: 登录验证码失效时间,单位分钟。 - `RESET_PASSWD_CODE_LIVE_MINUTES`: 重置密码失效时间,单位分钟。 - `REGISTER_EMAIL_CONFIRM`: 启用注册邮件激活,前提是 `Mailer` 已经启用。 +- `REGISTER_MANUAL_CONFIRM`: **false**: 新注册用户必须由管理员手动激活,启用此选项需取消`REGISTER_EMAIL_CONFIRM`. - `DISABLE_REGISTRATION`: 禁用注册,启用后只能用管理员添加用户。 - `SHOW_REGISTRATION_BUTTON`: 是否显示注册按钮。 - `REQUIRE_SIGNIN_VIEW`: 是否所有页面都必须登录后才可访问。 diff --git a/integrations/mssql.ini.tmpl b/integrations/mssql.ini.tmpl index 7a51871fc..44c0a7eed 100644 --- a/integrations/mssql.ini.tmpl +++ b/integrations/mssql.ini.tmpl @@ -55,6 +55,7 @@ FROM = mssql-integration-test@gitea.io [service] REGISTER_EMAIL_CONFIRM = false +REGISTER_MANUAL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = false ENABLE_CAPTCHA = false diff --git a/integrations/mysql.ini.tmpl b/integrations/mysql.ini.tmpl index db1051e62..2b044498e 100644 --- a/integrations/mysql.ini.tmpl +++ b/integrations/mysql.ini.tmpl @@ -76,6 +76,7 @@ FROM = mysql-integration-test@gitea.io [service] REGISTER_EMAIL_CONFIRM = false +REGISTER_MANUAL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = false ENABLE_CAPTCHA = false diff --git a/integrations/mysql8.ini.tmpl b/integrations/mysql8.ini.tmpl index d6fcbc1dd..798ab7852 100644 --- a/integrations/mysql8.ini.tmpl +++ b/integrations/mysql8.ini.tmpl @@ -50,6 +50,7 @@ ENABLED = false [service] REGISTER_EMAIL_CONFIRM = false +REGISTER_MANUAL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = false ENABLE_CAPTCHA = false diff --git a/integrations/pgsql.ini.tmpl b/integrations/pgsql.ini.tmpl index 523def788..5f082f04e 100644 --- a/integrations/pgsql.ini.tmpl +++ b/integrations/pgsql.ini.tmpl @@ -56,6 +56,7 @@ FROM = pgsql-integration-test@gitea.io [service] REGISTER_EMAIL_CONFIRM = false +REGISTER_MANUAL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = false ENABLE_CAPTCHA = false diff --git a/integrations/sqlite.ini.tmpl b/integrations/sqlite.ini.tmpl index 4c9dce4bb..5ed096b0a 100644 --- a/integrations/sqlite.ini.tmpl +++ b/integrations/sqlite.ini.tmpl @@ -52,6 +52,7 @@ FROM = sqlite-integration-test@gitea.io [service] REGISTER_EMAIL_CONFIRM = false +REGISTER_MANUAL_CONFIRM = false ENABLE_NOTIFY_MAIL = true DISABLE_REGISTRATION = false ENABLE_CAPTCHA = false diff --git a/modules/setting/service.go b/modules/setting/service.go index 4d03df17a..5e74641d2 100644 --- a/modules/setting/service.go +++ b/modules/setting/service.go @@ -17,6 +17,7 @@ var Service struct { ActiveCodeLives int ResetPwdCodeLives int RegisterEmailConfirm bool + RegisterManualConfirm bool EmailDomainWhitelist []string DisableRegistration bool AllowOnlyExternalRegistration bool @@ -63,6 +64,11 @@ func newService() { Service.ResetPwdCodeLives = sec.Key("RESET_PASSWD_CODE_LIVE_MINUTES").MustInt(180) Service.DisableRegistration = sec.Key("DISABLE_REGISTRATION").MustBool() Service.AllowOnlyExternalRegistration = sec.Key("ALLOW_ONLY_EXTERNAL_REGISTRATION").MustBool() + if !sec.Key("REGISTER_EMAIL_CONFIRM").MustBool() { + Service.RegisterManualConfirm = sec.Key("REGISTER_EMAIL_CONFIRM").MustBool(false) + } else { + Service.RegisterManualConfirm = false + } Service.EmailDomainWhitelist = sec.Key("EMAIL_DOMAIN_WHITELIST").Strings(",") Service.ShowRegistrationButton = sec.Key("SHOW_REGISTRATION_BUTTON").MustBool(!(Service.DisableRegistration || Service.AllowOnlyExternalRegistration)) Service.ShowMilestonesDashboardPage = sec.Key("SHOW_MILESTONES_DASHBOARD_PAGE").MustBool(true) diff --git a/routers/user/auth.go b/routers/user/auth.go index 1e3409941..acd88b364 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -949,7 +949,7 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au Name: form.UserName, Email: form.Email, Passwd: form.Password, - IsActive: !setting.Service.RegisterEmailConfirm, + IsActive: !(setting.Service.RegisterEmailConfirm || setting.Service.RegisterManualConfirm), LoginType: models.LoginOAuth2, LoginSource: loginSource.ID, LoginName: gothUser.(goth.User).UserID, @@ -1144,7 +1144,7 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo Name: form.UserName, Email: form.Email, Passwd: form.Password, - IsActive: !setting.Service.RegisterEmailConfirm, + IsActive: !(setting.Service.RegisterEmailConfirm || setting.Service.RegisterManualConfirm), } if err := models.CreateUser(u); err != nil { switch {