fix: 设置默认账号为 demo/demo123,修复数据路径

问题修复:
1. ✅ 默认账号设置
   - db.rs: 默认密码改为 demo123
   - .env.template: 默认密码改为 demo123
   - install.sh: 默认密码改为 demo123

2. ✅ 数据路径动态化
   - db.rs: 使用 dirs::home_dir() 自动检测用户主目录
   - 默认路径: {HOME}/momentry_studio/data/users
   - 支持通过 MOMENTRY_DATA_DIR 环境变量自定义

验证脚本:
- scripts/verify_default_setup.sh: 验证默认账号和数据路径

目标:
- 安装后可直接使用 demo/demo123 登录
- 数据路径随用户主目录自动调整
- 适用于任何用户环境

影响:
- demo 用户: 密码固定为 demo123
- 数据路径: 自动检测 {HOME}/momentry_studio/data/users
- 安装即可使用,无需额外配置
This commit is contained in:
2026-10-12 15:35:22 +08:00
parent 12943a3f07
commit 313d42be2f
4 changed files with 241 additions and 20 deletions

View File

@@ -52,9 +52,14 @@ CREATE INDEX IF NOT EXISTS idx_video_marks_file ON video_marks(file_uuid);
static DB_CONN: Mutex<Option<Connection>> = Mutex::new(None);
fn db_path() -> PathBuf {
let base = std::env::var("MOMENTRY_DATA_DIR").unwrap_or_else(|_| "../data/users".to_string());
// Use dynamic path based on user home directory
let base = std::env::var("MOMENTRY_DATA_DIR").unwrap_or_else(|_| {
let home = dirs::home_dir()
.expect("Failed to get home directory");
format!("{}/momentry_studio/data/users", home.display())
});
std::fs::create_dir_all(&base).ok();
PathBuf::from(base).join("demo.sqlite")
PathBuf::from(base).join("demo.sqlite") // TODO: Change to dynamic username
}
pub fn init_db() -> Result<(), String> {
@@ -66,19 +71,11 @@ pub fn init_db() -> Result<(), String> {
// Add password_hash column if not exists (migration)
conn.execute("ALTER TABLE app_users ADD COLUMN password_hash TEXT", []).ok();
// Get default user credentials from environment or use generated values
// Get default user credentials from environment or use demo123 as default
let default_id = "demo";
let default_user = "demo";
let default_password = std::env::var("MOMENTRY_DEFAULT_PASSWORD")
.unwrap_or_else(|_| {
// Generate a random password if not set
use std::time::{SystemTime, UNIX_EPOCH};
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs();
format!("demo_{}", timestamp % 1000000) // demo_123456
});
.unwrap_or_else(|_| "demo123".to_string()); // Default: demo123
// Check if demo user exists and has password
let password_hash: Option<String> = conn