INNER CODE UNIT · Rust

rotate_token

ovexro/dockpanel · panel/agent/src/routes/mod.rs:212

pub async fn rotate_token(
    axum::extract::State(state): axum::extract::State<AppState>,
) -> Result<axum::Json<serde_json::Value>, StatusCode> {
    let new_token = uuid::Uuid::new_v4().to_string();

    // Move current token to previous (with grace period)
    let old_token = state.token.read().await.clone();
    {
        let mut prev = state.previous_token.write().await;
        *prev = Some((old_token, std::time::Instant::now()));
    }

    // Write new token to disk atomically
    let token_path = format!("{}/agent.token", super::CONFIG_DIR);
    let tmp_path = format!("{}.tmp", token_path);
    if let Err(e) = std::fs::write(&tmp_path, &new_token) {
        tracing::error!("Failed to write temp token file: {e}");
        return Err(StatusCode::INTERNAL_SERVER_ERROR);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…