Feature #126
closedFeature #78: Rendre accessibles des pages publiques via liens uniques sans authentification
Backend — chargement public d'une ressource par resource_id (SharedLink)
0%
Description
Parent : #78. **Suivi de #87/#88.**
Lacune identifiée pendant le dev de #88 : `resolveSharedLink` (#87) renvoie `{resource_type, resource_id}`, mais il n'existe **pas** de fonction publique chargeant les données de la ressource par `resource_id`. Les fonctions publiques existantes (`getPublicRoadmap`, `getPublicContract`, `getPressSpace`) sont indexées par leur propre token, pas par un `resource_id` validé via SharedLink. Le dispatcher #88 passe donc le token SharedLink à ces fonctions, ce qui ne rend pas les données de bout en bout (sauf si les tokens coïncident).
À faire : ajouter des fonctions PUBLIC (hors guard) qui, **à partir d'un token SharedLink validé**, chargent et renvoient les données de la ressource cible par `resource_id` (feuille de route, contrat, espace presse). Câbler #88 dessus.
## Acceptance criteria
- [ ] Une fonction publique charge la ressource (roadmap/contrat/presse) par `resource_id` après validation du token SharedLink.
- [ ] Le dispatcher `PublicSharedLink` (#88) affiche les vraies données pour les 4 types, sans auth.
- [ ] Token révoqué/expiré → pas de données (« Lien invalide »).
- [ ] Tests backend + lint/typecheck verts.