feat(admin): 登录改页内弹窗 + P1 站点设置(页头/侧栏)
- 登录:LoginDialog(Modal)替代 /login 页面;/login 重定向回首页 - 设置接口:GET /api/settings 公开读、PATCH 需登录 + version 乐观锁(409/400) - setting 表存 site JSON:页头(启用/速度/条目+标签+色调)、侧栏(hidden/order) - /admin:Tabs 页头/侧栏,条目增删与上下移,保存后首页生效 - 首页应用设置:ticker 文本占位符与速度、侧栏顺序与显隐 - 测试 42 passed(settings 5 例)
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
pub mod auth;
|
||||
mod catalog;
|
||||
mod schema;
|
||||
pub mod settings;
|
||||
|
||||
use std::sync::Mutex;
|
||||
|
||||
@@ -24,6 +25,8 @@ pub use schema::SeedReport;
|
||||
|
||||
/// 登录/会话的对外状态(server 层直接用)。
|
||||
pub use auth::SessionState;
|
||||
/// 站点设置:页头滚动信息 + 侧栏顺序/显隐。
|
||||
pub use settings::{Settings, SettingsDocument};
|
||||
|
||||
/// 一次查询得到的完整内容目录。
|
||||
///
|
||||
@@ -152,6 +155,22 @@ impl Db {
|
||||
let mut conn = self.lock()?;
|
||||
auth::change_password(&mut conn, current, next)
|
||||
}
|
||||
|
||||
// ---------- 站点设置 ----------
|
||||
|
||||
pub fn load_settings(&self) -> Result<SettingsDocument, StashError> {
|
||||
let conn = self.lock()?;
|
||||
settings::load(&conn)
|
||||
}
|
||||
|
||||
pub fn save_settings(
|
||||
&self,
|
||||
next: Settings,
|
||||
expected_version: i64,
|
||||
) -> Result<SettingsDocument, StashError> {
|
||||
let mut conn = self.lock()?;
|
||||
settings::save(&mut conn, next, expected_version)
|
||||
}
|
||||
}
|
||||
|
||||
/// 把 rusqlite 的错误统一收敛成 `StashError::Database`。
|
||||
|
||||
Reference in New Issue
Block a user