fix: partage dirigé — dossier Partage virtuel + ouverture en onglet #196
- _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:
+8
-1
@@ -1,6 +1,6 @@
|
||||
# ObsiGate — Roadmap
|
||||
|
||||
> **Version :** 2.67.0 | **Dernière mise à jour :** 2026-10-10
|
||||
> **Version :** 2.67.1 | **Dernière mise à jour :** 2026-10-10
|
||||
> **Ce fichier ne contient que le travail à venir** (🔵 En cours + ⚪ Backlog) et un index compact
|
||||
> vers les fonctionnalités livrées.
|
||||
> - **Méthode de livraison à appliquer pour toute tâche : [DELIVERY_WORKFLOW.md](./DELIVERY_WORKFLOW.md)**
|
||||
@@ -57,6 +57,13 @@
|
||||
jamais l'éditeur du vault d'autrui) ; cache front invalidé à la
|
||||
création/révocation. +2 tests (recherche trouvée par le destinataire,
|
||||
aucune fuite vers un non-destinataire).
|
||||
- [x] **Itération 3 (2026-10-11)** : le dossier Partage ne déclenche plus la
|
||||
navigation (dossier virtuel — corrige « Directory not found: Partage ») ;
|
||||
un fichier reçu s'ouvre **dans l'application en onglet** (arbre,
|
||||
recherche, dashboard) via la résolution serveur
|
||||
`home-<user>/Partage/<fichier>` → fichier source dans `/api/file`
|
||||
(+ raw, download) ; validation `path` non-nulle à la création d'un
|
||||
partage. +2 tests.
|
||||
|
||||
### 194. Dossier personnel par utilisateur (`<racine>/Home/<user>`)
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user