Harden auth/vault path sanitization and clean WeKnora docs
This commit is contained in:
@@ -41,6 +41,8 @@ pub struct AppConfig {
|
||||
pub dev_user_id: String,
|
||||
pub dev_user_name: String,
|
||||
pub dev_user_email: String,
|
||||
/// "dev" | "prod" — 影响前端显示与 env 片段中的 base URL。
|
||||
pub environment: String,
|
||||
}
|
||||
|
||||
impl AppConfig {
|
||||
@@ -93,10 +95,29 @@ impl AppConfig {
|
||||
.ok()
|
||||
.or_else(|| read_env_or_dotenv("DEV_USER_EMAIL"))
|
||||
.unwrap_or_else(|| "dev@mnote.local".into()),
|
||||
environment: detect_environment(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 推断运行环境:显式 MNOTE_WEB_ENV > 端口匹配(3000=dev, 3003=prod)> 默认 "dev"。
|
||||
fn detect_environment() -> String {
|
||||
if let Ok(v) = env::var("MNOTE_WEB_ENV") {
|
||||
let t = v.trim().to_lowercase();
|
||||
if !t.is_empty() {
|
||||
return t;
|
||||
}
|
||||
}
|
||||
let port = env::var("MNOTE_WEB_BIND")
|
||||
.or_else(|_| env::var("MNOTE_WEB_PUBLIC_BIND"))
|
||||
.ok()
|
||||
.and_then(|addr| addr.rsplit(':').next()?.parse::<u16>().ok());
|
||||
match port {
|
||||
Some(3003) => "prod".into(),
|
||||
_ => "dev".into(),
|
||||
}
|
||||
}
|
||||
|
||||
fn env_bool(key: &str, default: bool) -> bool {
|
||||
env::var(key)
|
||||
.ok()
|
||||
@@ -392,6 +413,7 @@ mod tests {
|
||||
dev_user_id: "dev-user".into(),
|
||||
dev_user_name: "开发用户".into(),
|
||||
dev_user_email: "dev@mnote.local".into(),
|
||||
environment: "dev".into(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user