diff --git a/frontend/src/pages/settings/DataCleanupSection.jsx b/frontend/src/pages/settings/DataCleanupSection.jsx index 756343e..9ad1032 100644 --- a/frontend/src/pages/settings/DataCleanupSection.jsx +++ b/frontend/src/pages/settings/DataCleanupSection.jsx @@ -44,6 +44,7 @@ export default function DataCleanupSection() { const [purgeScope, setPurgeScope] = useState('all'); const [showPurgeModal, setShowPurgeModal] = useState(false); const [purgeConfirmText, setPurgeConfirmText] = useState(''); + const [purgePin, setPurgePin] = useState(''); const [loadingPurge, setLoadingPurge] = useState(false); useEffect(() => { @@ -51,22 +52,29 @@ export default function DataCleanupSection() { }, []); const purgePlat = plats.find(p => String(p.id) === String(purgePlatId)) || null; + // Plusieurs membres de la famille/entreprise peuvent avoir une plateforme du même nom + // (ex. deux comptes "Enky" distincts) — on ajoute le détenteur au libellé pour lever + // l'ambiguïté, uniquement quand plus d'un détenteur est présent dans la liste. + const multiDetenteurPlats = new Set(plats.map(p => p.investisseur_id)).size > 1; const openPurgeModal = () => { if (!purgePlat) return; setPurgeConfirmText(''); + setPurgePin(String(Math.floor(100000 + Math.random() * 900000))); setShowPurgeModal(true); }; const handlePurge = async () => { - if (!purgePlat || purgeConfirmText.trim() !== purgePlat.nom) return; + if (!purgePlat || purgeConfirmText.trim() !== purgePin) return; setLoadingPurge(true); setErrorMsg(null); setSuccessMsg(null); try { const r = await api.post(`/plateformes/${purgePlat.id}/purge-donnees`, { scope: purgeScope, - confirmNom: purgeConfirmText.trim(), + // Le PIN est une confirmation côté interface uniquement ; l'API continue d'exiger + // le nom exact de la plateforme, déjà connu ici puisque sélectionné dans le formulaire. + confirmNom: purgePlat.nom, }); setSuccessMsg(`"${r.plateforme}" — ${purgeSummary(r.counts, purgeScope)}`); setShowPurgeModal(false); @@ -300,7 +308,11 @@ export default function DataCleanupSection() {
@@ -474,7 +486,8 @@ export default function DataCleanupSection() {

⚠ Suppression de données — action irréversible

- Vous vous apprêtez à supprimer, pour la plateforme {purgePlat.nom} : + Vous vous apprêtez à supprimer, pour la plateforme {purgePlat.nom} + {multiDetenteurPlats && purgePlat.investisseur_nom ? <> ({purgePlat.investisseur_nom}) : null} :

-
@@ -502,7 +529,7 @@ export default function DataCleanupSection() {