Commentaires — publier, masquer, mode privé #13

Closed
opened 2026-05-08 21:18:56 +00:00 by cedricAbonnel · 1 comment
Owner

Contexte

Le système de commentaires est prévu dans l'architecture (voir architecture-notes.md) mais n'est pas encore implémenté.

Besoin

Permettre aux lecteurs de commenter un article, et à l'auteur de modérer les commentaires.

Comportement attendu

  • Formulaire de commentaire en bas de chaque article (lecteur non authentifié ou authentifié)
  • Chaque commentaire a un statut : public, hidden, private
  • private : visible uniquement de l'auteur de l'article
  • hidden : masqué côté public (modération)
  • L'auteur peut basculer le statut depuis la vue de l'article
  • Pas de compte requis pour commenter (nom + message suffisent)

Pistes techniques

  • Table comments : id, post_id, author_name, body, status, created_at
  • Créer CommentManager (ou CommentRepository) pour les opérations CRUD
  • Routes : POST /posts/{id}/comments (création), POST /comments/{id}/hide, POST /comments/{id}/publish
  • Template partiel comment_list.php et comment_form.php

Critères d'acceptation

  • Un lecteur peut soumettre un commentaire
  • L'auteur peut masquer ou rendre privé un commentaire
  • Les commentaires masqués n'apparaissent pas côté public
  • Les commentaires privés sont visibles uniquement de l'auteur
## Contexte Le système de commentaires est prévu dans l'architecture (voir `architecture-notes.md`) mais n'est pas encore implémenté. ## Besoin Permettre aux lecteurs de commenter un article, et à l'auteur de modérer les commentaires. ## Comportement attendu - Formulaire de commentaire en bas de chaque article (lecteur non authentifié ou authentifié) - Chaque commentaire a un statut : `public`, `hidden`, `private` - `private` : visible uniquement de l'auteur de l'article - `hidden` : masqué côté public (modération) - L'auteur peut basculer le statut depuis la vue de l'article - Pas de compte requis pour commenter (nom + message suffisent) ## Pistes techniques - Table `comments` : `id`, `post_id`, `author_name`, `body`, `status`, `created_at` - Créer `CommentManager` (ou `CommentRepository`) pour les opérations CRUD - Routes : POST `/posts/{id}/comments` (création), POST `/comments/{id}/hide`, POST `/comments/{id}/publish` - Template partiel `comment_list.php` et `comment_form.php` ## Critères d'acceptation - [ ] Un lecteur peut soumettre un commentaire - [ ] L'auteur peut masquer ou rendre privé un commentaire - [ ] Les commentaires masqués n'apparaissent pas côté public - [ ] Les commentaires privés sont visibles uniquement de l'auteur
Author
Owner

Résolution

Le système de vérification des commentaires a été revu :

  • Email : contient un lien /verify-comment/{uuid} + un code PIN à 6 chiffres affiché dans le corps
  • Formulaire : le visiteur saisit le code à 6 chiffres à l'URL du lien (pas de consommation automatique par les scanners)
  • Sécurité : 3 tentatives incorrectes → commentaire supprimé automatiquement
  • DB : ajout colonnes verify_token (UUID) et verify_attempts (compteur) via migration_007_comment_verify_token.sql

Commit : 26ddbc3

## Résolution Le système de vérification des commentaires a été revu : - **Email** : contient un lien `/verify-comment/{uuid}` + un code PIN à 6 chiffres affiché dans le corps - **Formulaire** : le visiteur saisit le code à 6 chiffres à l'URL du lien (pas de consommation automatique par les scanners) - **Sécurité** : 3 tentatives incorrectes → commentaire supprimé automatiquement - **DB** : ajout colonnes `verify_token` (UUID) et `verify_attempts` (compteur) via `migration_007_comment_verify_token.sql` Commit : `26ddbc3`
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/varlog#13