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:
1 parent
8469df359f
commit
9055cc77ec
7 files changed
+369
-119
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user