feat: 外观设置后端持久化 + 保存按钮 + 跨浏览器同步

后端:
- User 模型新增 Preferences JSON 字段 (theme + login_style)
- 新增 GET/PUT /api/v1/user/preferences (auth) 个人偏好读写
- 新增 GET /api/v1/public/login-style (public) 登录页风格公开端点
- SQLite users 表手动添加 preferences 列

前端:
- AppearanceSettings 从后端加载偏好 + 保存按钮 + dirty 状态提示
- LoginPage 先从后端公开接口获取 login_style (跨浏览器一致)
- useLogin 登录成功后从后端加载偏好并应用主题
- 偏好同时存 localStorage(即时) + 后端DB(跨设备)
This commit is contained in:
logan committed 2026-05-26 22:09:47 +08:00
1 parent 8469df359f
commit 9055cc77ec
7 files changed
+369 -119

No files matched your search

+5
View File
@@ -12,6 +12,7 @@ func Setup(r *gin.Engine) {
// Public routes
api.POST("/auth/login", handler.Login)
api.GET("/public/login-style", handler.GetPublicLoginStyle)
// Authenticated routes
auth := api.Group("")
@@ -126,6 +127,10 @@ func Setup(r *gin.Engine) {
ldapAdmin.POST("/ldap-config/delete-user", handler.DeleteLDAPUser)
}
// User Preferences (per-user, auth required)
auth.GET("/user/preferences", handler.GetUserPreferences)
auth.PUT("/user/preferences", handler.UpdateUserPreferences)
// Settings
auth.GET("/settings", handler.ListSettings)
auth.PUT("/settings", handler.UpdateSettings)