fix: partage dirigé — ACL court-circuitée après résolution Partage/ + chemin canonique au token #196
- le partage EST l'autorisation: plus de 403 'Accès refusé à la vault' pour un destinataire sans accès au vault émetteur (api_file, raw, download) - chemin virtuel canonique Partage/<token>/<nom> — désambiguïse les homonymes, fallback par nom conservé - 'reçu' = partagé_avec contient l'utilisateur: un admin ne voit plus les partages des autres comme reçus (fix File not found: Partage/…) - +3 tests (14 total)
This commit is contained in:
+9
-1
@@ -1,6 +1,6 @@
|
||||
# ObsiGate — Roadmap
|
||||
|
||||
> **Version :** 2.67.1 | **Dernière mise à jour :** 2026-10-10
|
||||
> **Version :** 2.67.2 | **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)**
|
||||
@@ -64,6 +64,14 @@
|
||||
`home-<user>/Partage/<fichier>` → fichier source dans `/api/file`
|
||||
(+ raw, download) ; validation `path` non-nulle à la création d'un
|
||||
partage. +2 tests.
|
||||
- [x] **Itération 4 (2026-10-11)** : le partage dirigé EST l'autorisation —
|
||||
la résolution `Partage/…` court-circuite l'ACL du vault source (fix
|
||||
« Accès refusé à la vault … » : le destinataire n'a par définition
|
||||
pas accès au vault de l'émetteur) ; chemin virtuel canonique
|
||||
`Partage/<token>/<nom>` (lève l'ambiguïté de fichiers homonymes,
|
||||
fallback par nom conservé) ; « reçu » = adressé à moi (un admin ne
|
||||
voit plus les partages d'autres comptes comme reçus — fix 404
|
||||
« File not found: Partage/… »). +3 tests.
|
||||
|
||||
### 194. Dossier personnel par utilisateur (`<racine>/Home/<user>`)
|
||||
|
||||
|
||||
@@ -121,3 +121,23 @@ Décisions :
|
||||
`/api/shares` en 500).
|
||||
+2 tests : ouverture applicative du fichier reçu (file + raw), résolution
|
||||
scopée par utilisateur (home d'autrui → 403).
|
||||
|
||||
|
||||
## Itération 4 — correctifs d'ouverture (2026-10-11)
|
||||
|
||||
- **Le partage EST l'autorisation** : après résolution `Partage/…`, l'ACL du
|
||||
vault source n'est plus appliquée (`elif` dans `/api/file`, raw, download) —
|
||||
un destinataire sans accès au vault émetteur ouvrait « Accès refusé à la
|
||||
vault '…' », précisément le cas d'usage du partage. L'appartenance au
|
||||
partage (vérifiée dans `_resolve_shared_file` via `list_shares(user=…)`)
|
||||
reste la seule autorisation.
|
||||
- **Chemin canonique `Partage/<token>/<nom>`** : lève l'ambiguïté de deux
|
||||
partages homonymes (le token identifie le partage exact). Fallback par nom
|
||||
conservé pour les liens historiques. Transporté par l'arbre (`data-path`),
|
||||
la recherche et le dashboard.
|
||||
- **« Reçu » = adressé à moi** : sidebar `_loadReceivedShares` et dashboard
|
||||
filtrent désormais `shared_with.includes(me)` — un admin voyant TOUS les
|
||||
partages (`/api/shares` non scopé pour lui) n'a plus les partages d'autres
|
||||
comptes dans son dossier Partage (source des « File not found »).
|
||||
+3 tests : destinataire sans accès au vault source (200), disambiguïsation
|
||||
par token, home d'autrui (403). 14 tests au total.
|
||||
|
||||
Reference in New Issue
Block a user