Complete private authentication, server integrations and activity reporting

Add Fabric/Forge version builds and Paper integration, preserve permanent player identities across renames, harden session authorization, and surface privacy-conscious launcher/server activity in the panel.
This commit is contained in:
SCOPEDD committed 2026-09-28 13:31:17 -04:00
commit a1f19e86c6
74 files changed
+2108 -95

No files matched your search

+19
View File
@@ -134,6 +134,25 @@ fn save_panel_account(state: &AppState, panel: &str, auth: AuthResponse) -> Resu
Ok(account)
}
pub async fn rename_panel(state: &AppState, username: &str, password: &str) -> Result<Account> {
if state.game.lock().unwrap().is_some() || state.task.lock().unwrap().as_ref().is_some_and(|t| !t.is_finished()) {
bail!("close Minecraft and wait for any installation to finish before changing your username");
}
let panel = state.panel_url().ok_or_else(|| anyhow!("no panel configured"))?;
let token = panel_token(state).ok_or_else(|| anyhow!("sign in to your server account first"))?;
let resp = state
.http
.put(format!("{panel}/api/v1/account/username"))
.bearer_auth(token)
.json(&json!({"username": username, "password": password}))
.send()
.await?;
if !resp.status().is_success() {
return Err(panel_error(resp).await);
}
save_panel_account(state, &panel, resp.json().await?)
}
pub fn add_offline(state: &AppState, username: &str) -> Result<Account> {
let allowed = state.manifest.read().unwrap().as_ref().map(|m| m.auth.offline_local).unwrap_or(true);
if !allowed {