feat: 管理员跨租户管理 + 注册开关

- 管理员可管理任意用户笔记(读取/修改/删除/回收站/标签/图谱/FTS 全平台)
- 普通用户仍数据隔离, 越权返回404
- 新增注册开关: 管理员后台⚙设置可开/关, 支持REGISTRATION_ENABLED环境变量
- 注册关闭时前台/登录页隐藏注册入口, 注册接口返回400
- 冒烟测试扩展到91用例全过
This commit is contained in:
Your Name
2026-08-11 13:07:56 +08:00
parent d9793300f9
commit 13c53fea0a
12 changed files with 741 additions and 89 deletions
+18
View File
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"log"
"os"
"github.com/gin-gonic/gin"
"note-manager/config"
@@ -12,6 +13,14 @@ import (
"note-manager/service"
)
// getDefaultReg 返回注册开关默认值(来自环境变量 REGISTRATION_ENABLED,默认开启)
func getDefaultReg() string {
if v := os.Getenv("REGISTRATION_ENABLED"); v != "" {
return v
}
return "true"
}
func main() {
// 加载配置
cfg := config.Load()
@@ -36,6 +45,15 @@ func main() {
log.Fatalf("初始化上传目录失败: %v", err)
}
// 确保系统设置表存在(注册开关等)
if err := userRepo.EnsureSettingsTable(); err != nil {
log.Fatalf("初始化系统设置表失败: %v", err)
}
// 注册开关默认值来自环境变量 REGISTRATION_ENABLED(默认开启)
userService.SetRegistrationDefault(getDefaultReg())
// 注入角色判定,使管理员能跨租户管理笔记
noteService.RegisterRoleChecker(userService)
// 初始化 Gin(设置模板目录)
gin.SetMode(gin.ReleaseMode)
engine := gin.Default()