diff --git a/internal/controller/auth_controller.go b/internal/controller/auth_controller.go index fe1b7c7..6b6244e 100644 --- a/internal/controller/auth_controller.go +++ b/internal/controller/auth_controller.go @@ -23,7 +23,7 @@ func NewAuthController(authService authUseCase, tokenSvc tokenRefresher, limiter return &AuthController{authService: authService, tokenService: tokenSvc, rateLimiter: limiter, cfg: cfg} } -// RegisterPage 注册页面(已登录用户重定向到首页,注册关闭时重定向到登录页) +// RegisterPage 注册页面(已登录用户重定向到首页) func (ac *AuthController) RegisterPage(c *gin.Context) { if _, exists := c.Get("uid"); exists { c.Redirect(http.StatusFound, "/") @@ -35,9 +35,10 @@ func (ac *AuthController) RegisterPage(c *gin.Context) { return } c.HTML(http.StatusOK, "auth/register.html", common.BuildPageData(c, gin.H{ - "Title": "注册", - "ExtraCSS": "/static/css/auth.css", - "Guidelines": guidelines, + "Title": "注册", + "ExtraCSS": "/static/css/auth.css", + "Guidelines": guidelines, + "RegistrationEnabled": ac.authService.IsRegistrationEnabled(), })) } diff --git a/internal/controller/interfaces.go b/internal/controller/interfaces.go index c9fcbce..00854fc 100644 --- a/internal/controller/interfaces.go +++ b/internal/controller/interfaces.go @@ -6,12 +6,13 @@ import ( "metazone.cc/metalab/internal/service" ) -// authUseCase AuthController 对 AuthService 的最小依赖(ISP:4 个方法) +// authUseCase AuthController 对 AuthService 的最小依赖(ISP:5 个方法) type authUseCase interface { Register(req model.RegisterRequest, regIP string) (string, string, *model.User, error) Login(req model.LoginRequest, loginIP string) (string, string, *model.User, error) ConfirmRestore(req model.LoginRequest, loginIP string) (string, string, *model.User, error) CheckEmail(email string) (bool, error) + IsRegistrationEnabled() bool } // tokenRefresher AuthController 对 TokenService 的最小依赖(ISP:1 个方法) diff --git a/internal/service/auth_service.go b/internal/service/auth_service.go index a1e9af9..4c0179a 100644 --- a/internal/service/auth_service.go +++ b/internal/service/auth_service.go @@ -52,6 +52,11 @@ func validatePassword(pw string) error { return nil } +// IsRegistrationEnabled 检查是否允许新用户注册 +func (s *AuthService) IsRegistrationEnabled() bool { + return s.siteSettings.IsRegistrationEnabled() +} + // Register 注册 // 流程:密码强度 → 邮箱查重 → 哈希 → 生成唯一用户名 → 创建 → access JWT + refresh JWT // rememberMe=true: refresh Cookie 持久化(30天);false: session cookie(关浏览器即清除) diff --git a/templates/MetaLab-2026/html/auth/register.html b/templates/MetaLab-2026/html/auth/register.html index 00ccd23..64e0bc5 100644 --- a/templates/MetaLab-2026/html/auth/register.html +++ b/templates/MetaLab-2026/html/auth/register.html @@ -7,6 +7,7 @@
加入 MetaLab 开发者社区
+ {{if .RegistrationEnabled}}