Project

General

Profile

Actions

Feature #87

closed
RA

Feature #78: Rendre accessibles des pages publiques via liens uniques sans authentification

Backend — modèle SharedLink + endpoints publics + révocation

Feature #87: Backend — modèle SharedLink + endpoints publics + révocation

Added by Redmine Admin about 2 months ago. Updated about 1 month ago.

Status:
Shipped
Priority:
Normal
Assignee:
-
Start date:
06/15/2026
Due date:
% Done:

0%

Estimated time:
spec_ref:
build_status:
build_number:
ci_run_url:
scan_status:
scan_report_url:
deploy_status:
deployed
preprod_url:
deployed_at:
06/23/2026
branch:
feat/87-sharedlink-backend
pr_url:
https://github.com/Scobby-organisation/scobby/pull/9
security_key:
severity:
paused:

Description

Parent : #78 (liens publics uniques sans auth).

Créer l'entité Prisma `SharedLink` (token opaque **cryptographiquement aléatoire / non énumérable** + unique, `resourceType` ∈ {feuille_de_route, confirmation_date, contrat, espace_presse}, `resourceId`, `status` actif/révoqué, `createdBy`, timestamps, `expiresAt` optionnel). Endpoints PUBLIC (hors guard JWT) résolvant token→ressource en réutilisant les fonctions PUBLIC existantes (getPublicContract, submitPublicArtistForm, téléchargement dossier presse, feuille de route). Endpoints admin (sous guard) : génération + révocation. Token révoqué/expiré → échec propre (404/403 structuré, sans fuite d'info).

Stack : NestJS + Prisma + Postgres (server/), registre PUBLIC/PRIVATE existant.

## Acceptance criteria
- [ ] Migration Prisma : table SharedLink, token unique, index (resourceType, resourceId).
- [ ] Génération (admin, sous guard) → token opaque non devinable lié à la ressource.
- [ ] Révocation **immédiate** : un token précédemment valide ne résout plus.
- [ ] Endpoints publics fonctionnent sans JWT et ne renvoient que les données déjà exposées par les fonctions PUBLIC correspondantes.
- [ ] La **soumission du formulaire de confirmation** via token **enregistre correctement** les données (AC explicite du ticket).
- [ ] Token inconnu/révoqué/expiré → erreur structurée sans fuite.
- [ ] Tests backend (TDD) + lint/typecheck verts.

Actions

Also available in: PDF Atom