fix: partage dirigé — dossier Partage virtuel + ouverture en onglet #196
CI / lint (push) Successful in 3m1s
CI / security (push) Failing after 1m58s
CI / test (push) Successful in 4m43s
CI / build (push) Successful in 1m39s
CI / e2e (push) Successful in 20m28s

- _resolve_shared_file: home-<user>/Partage/<f> -> fichier source (/api/file, raw, download)
- clic dossier Partage: dépliage sans navigation (fix Directory not found)
- fichiers reçus ouverts en onglet applicatif (arbre, recherche, dashboard)
- POST /api/share: path vide/null rejeté (400) — un share path:null cassait /api/shares
- +2 tests (13 total)
This commit is contained in:
2026-10-10 21:48:46 -04:00
parent fdc9f47a0d
commit de6bde1613
16 changed files with 142 additions and 29 deletions
+16
View File
@@ -105,3 +105,19 @@ Décisions :
+2 tests : `test_search_finds_received_share_for_recipient`,
`test_search_does_not_leak_share_to_other_user`.
## Itération 3 — ouverture en onglet (2026-10-11)
- **Résolution serveur** : `_resolve_shared_file()` (`backend/routers/files_read.py`)
mappe `home-<user>/Partage/<fichier>` vers le fichier source pour les routes
`/api/file`, `/api/file/raw`, `/api/file/download`. Résolu AVANT l'ACL vault
(le home virtuel peut ne pas être dans `user.vaults`) — l'autorisation réelle
est l'appartenance au partage, vérifiée dans le resolver (destinataire seul).
- **Front** : clic dossier Partage → simple dépliage (plus de `openNav`, fix
« Directory not found ») ; clic fichier reçu → `TabManager.openPreview/openPersistent`
(arbre, recherche, dashboard) — même parcours qu'un fichier ordinaire.
- `POST /api/share` : `path` vide/null → 400 (un share `path: None` cassait
`/api/shares` en 500).
+2 tests : ouverture applicative du fichier reçu (file + raw), résolution
scopée par utilisateur (home d'autrui → 403).