Description
Aujourd'hui, un invité (guest) n'a aucun moyen de retrouver l'ensemble de ses partages depuis l'application : sa seule porte d'entrée est le lien contenu dans l'email reçu à chaque nouveau partage (ShareNotificationMailer/GuestAccountCreator). S'il perd ou supprime l'email, ou veut simplement retrouver ce qu'on lui a partagé, il n'a aucun recours.
Objectif : un espace dédié (ex. /mes-partages) listant tous les Share actifs où l'utilisateur connecté est guest, avec accès direct à chaque ressource (album/dossier/fichier), sans dépendre du lien email.
Contexte technique
Share (src/Entity/Share.php) porte déjà guest (ManyToOne User) + resourceType/resourceId polymorphe, avec un index dédié idx_share_lookup(guest_id, resource_type, resource_id) — la requête "tous les partages reçus par cet invité" est donc immédiate à écrire (pas de migration de schéma attendue).
isActive()/isExpired() existent déjà sur Share pour filtrer les partages expirés.
- La résolution ressource → URL existe déjà dans
ShareNotificationMailer::resolveAccessUrl() — à factoriser/réutiliser plutôt que dupliquer.
- Prévoir le résultat vide (aucun partage reçu) et les partages expirés (les exclure ou les afficher grisés, à trancher en conception).
Critères d'acceptation
Zone concernée
API (endpoint, State, ApiResource) + Frontend (CSS, Twig, Stimulus)
Effort estimé
M — 1 journée
Description
Aujourd'hui, un invité (guest) n'a aucun moyen de retrouver l'ensemble de ses partages depuis l'application : sa seule porte d'entrée est le lien contenu dans l'email reçu à chaque nouveau partage (
ShareNotificationMailer/GuestAccountCreator). S'il perd ou supprime l'email, ou veut simplement retrouver ce qu'on lui a partagé, il n'a aucun recours.Objectif : un espace dédié (ex.
/mes-partages) listant tous lesShareactifs où l'utilisateur connecté estguest, avec accès direct à chaque ressource (album/dossier/fichier), sans dépendre du lien email.Contexte technique
Share(src/Entity/Share.php) porte déjàguest(ManyToOne User) +resourceType/resourceIdpolymorphe, avec un index dédiéidx_share_lookup(guest_id, resource_type, resource_id)— la requête "tous les partages reçus par cet invité" est donc immédiate à écrire (pas de migration de schéma attendue).isActive()/isExpired()existent déjà surSharepour filtrer les partages expirés.ShareNotificationMailer::resolveAccessUrl()— à factoriser/réutiliser plutôt que dupliquer.Critères d'acceptation
accountType = guestZone concernée
API (endpoint, State, ApiResource) + Frontend (CSS, Twig, Stimulus)
Effort estimé
M — 1 journée