feat(auth): 添加用户注册开关功能

- 在系统设置中新增 allowRegister 配置项控制用户注册
- 实现注册接口的开关检查机制
- 登录页面根据注册开关动态显示或隐藏注册选项
- 首次 Linux.do 登录创建用户时也受注册开关限制
- 更新系统配置文档说明新的认证配置项
This commit is contained in:
HouYunFei
2026-05-25 16:03:54 +08:00
parent 030541b99d
commit b8e50c10f6
7 changed files with 50 additions and 7 deletions
+11
View File
@@ -59,6 +59,14 @@ func EnsureDefaultAdmin() error {
}
func Register(username string, password string) (model.AuthSession, error) {
settings, err := repository.GetSettings()
if err != nil {
return model.AuthSession{}, err
}
normalizedSettings := normalizeSettings(settings)
if normalizedSettings.Public.Auth.AllowRegister != nil && !*normalizedSettings.Public.Auth.AllowRegister {
return model.AuthSession{}, safeMessageError{message: "当前未开放注册"}
}
username = strings.TrimSpace(username)
if strings.ContainsAny(username, " \t\r\n") {
return model.AuthSession{}, safeMessageError{message: "用户名不能包含空格"}
@@ -163,6 +171,9 @@ func LoginWithLinuxDo(r *http.Request, code string, state string) (model.AuthSes
return model.AuthSession{}, redirect, err
}
if !ok {
if settings.Public.Auth.AllowRegister != nil && !*settings.Public.Auth.AllowRegister {
return model.AuthSession{}, redirect, safeMessageError{message: "当前未开放注册"}
}
user = model.User{
ID: newID("user"),
Username: linuxDoUsername(profile.Username, linuxDoID),
+4
View File
@@ -78,6 +78,10 @@ func normalizePublicSetting(setting model.PublicSetting) model.PublicSetting {
enabled := true
setting.ModelChannel.AllowCustomChannel = &enabled
}
if setting.Auth.AllowRegister == nil {
enabled := true
setting.Auth.AllowRegister = &enabled
}
return setting
}