improve deletion flow with shorter confirmations

This commit is contained in:
Taylor Wilsdon 2025-04-17 11:44:58 -07:00
parent 5478ae007b
commit 90ab5c0686

View File

@ -7,12 +7,12 @@ from pydantic import BaseModel, Field
import os import os
import pathlib import pathlib
import asyncio import asyncio
from typing import List, Optional, Literal, Dict, Union # Added Dict, Union from typing import List, Optional, Literal, Dict, Union
import difflib import difflib
import shutil import shutil
from datetime import datetime, timezone, timedelta # Added timedelta from datetime import datetime, timezone, timedelta
import uuid # Added uuid import json
import json # Added json import secrets
from config import ALLOWED_DIRECTORIES from config import ALLOWED_DIRECTORIES
app = FastAPI( app = FastAPI(
@ -469,7 +469,7 @@ async def delete_path(data: DeletePathRequest = Body(...)):
raise HTTPException(status_code=404, detail=f"Path not found: {data.path}") raise HTTPException(status_code=404, detail=f"Path not found: {data.path}")
# Generate token and expiry # Generate token and expiry
token = uuid.uuid4().hex token = secrets.token_hex(3)[:5] # Generate 6 hex chars (3 bytes), take first 5
expiry_time = now + timedelta(seconds=CONFIRMATION_TTL_SECONDS) expiry_time = now + timedelta(seconds=CONFIRMATION_TTL_SECONDS)
# Store confirmation details # Store confirmation details
@ -481,8 +481,10 @@ async def delete_path(data: DeletePathRequest = Body(...)):
save_confirmations(pending_confirmations) # Save updated state save_confirmations(pending_confirmations) # Save updated state
# Return confirmation required response # Return confirmation required response
# Construct the user-friendly message
confirmation_message = f"`Confirm deletion of file: {data.path} with token {token}`"
return ConfirmationRequiredResponse( return ConfirmationRequiredResponse(
message="Confirmation required to delete path. Use the provided token in a subsequent request with the same parameters.", message=confirmation_message,
confirmation_token=token, confirmation_token=token,
expires_at=expiry_time, expires_at=expiry_time,
) )