feat: 多租户账号体系 + 前台收藏按钮
- 新增 users 表(user_id 数据隔离,bcrypt 密码) - 认证: 注册/登录(用户名+密码)/会话绑定用户, 首个用户成为管理员并接管旧数据 - 数据隔离: 笔记/分类/标签/回收站/版本/草稿/图谱/FTS 全部按用户隔离 - 前台: 登录/注册弹窗, 登录后★收藏自己的笔记, 游客只读公开笔记 - 后台: 用户名+密码登录, 每人管理自己的工作区, 越权访问返回404 - 冒烟测试重构+新增多租户隔离用例(78/78)
This commit is contained in:
@@ -24,8 +24,11 @@ func main() {
|
||||
|
||||
// 初始化各层
|
||||
noteService := service.NewNoteService(repo, cfg.PageSize)
|
||||
userRepo := repository.NewUserRepository(repo.DB())
|
||||
userService := service.NewUserService(userRepo)
|
||||
noteHandler := handler.NewNoteHandler(noteService)
|
||||
adminHandler := handler.NewAdminHandler(noteService, cfg)
|
||||
authHandler := handler.NewAuthHandler(userService)
|
||||
adminHandler := handler.NewAdminHandler(userService)
|
||||
imageHandler := handler.NewImageHandler(cfg.UploadDir)
|
||||
|
||||
// 初始化图片上传目录
|
||||
@@ -44,7 +47,7 @@ func main() {
|
||||
engine.Static("/assets", "./web/admin")
|
||||
|
||||
// 初始化路由
|
||||
router.Setup(engine, noteHandler, adminHandler, imageHandler, cfg)
|
||||
router.Setup(engine, noteHandler, authHandler, adminHandler, imageHandler, cfg)
|
||||
|
||||
// 启动服务
|
||||
addr := fmt.Sprintf(":%s", cfg.Port)
|
||||
@@ -52,7 +55,7 @@ func main() {
|
||||
log.Printf("前台展示: http://localhost%s/", addr)
|
||||
log.Printf("后台管理: http://localhost%s/admin/", addr)
|
||||
log.Printf("图片上传目录: %s", cfg.UploadDir)
|
||||
log.Printf("后台登录密码请通过 ADMIN_PASS 环境变量配置(生产环境务必修改默认密码)")
|
||||
log.Printf("多租户模式:首个注册用户自动成为管理员")
|
||||
|
||||
if err := engine.Run(addr); err != nil {
|
||||
log.Fatalf("启动服务失败: %v", err)
|
||||
|
||||
Reference in New Issue
Block a user