d85a09719e
- Import CloudConnection and get_storage_backend_for_document into admin.py - In delete_user: query all CloudConnection rows for the target user before MinIO cleanup - For each connection: query documents with matching storage_backend, call delete_object best-effort (catch + ignore exceptions — same pattern as MinIO cleanup) - Explicit session.delete(conn) for each CloudConnection row before user row deletion - session.flush() after connection deletes to order SQL before user DELETE - write_audit_log(event_type="cloud.credentials_purged") with providers list metadata - Cloud cleanup runs BEFORE existing MinIO cleanup: credentials still available to build cloud backend instances for delete_object calls (SEC-09) - No orphaned credentials_enc rows after account deletion (SEC-09 satisfied)