Cassé dans la dernière version de Discourse
J’ai récemment mis à jour Discourse et ce plugin a fait planter le site. (Pour être clair, c’est probablement le résultat de mes modifications horribles plutôt que de Discourse lui-même. Je n’ai pas actuellement la bande passante pour trouver la solution, donc je laisse juste cet avertissement pour les autres.)
| Résumé | Ajoute un formulaire de contact en haut de tout sujet étiqueté contact. Les informations soumises via le formulaire seront envoyées au groupe ou à la catégorie configurée pour le recevoir. |
|
| Lien vers le dépôt | https://github.com/jericson/discourse-contact-plugin | |
| Guide d’installation | Comment installer des plugins dans Discourse |
Fonctionnalités
Lorsqu’il est activé, le plugin Contact Form place un formulaire de contact en haut de tout sujet étiqueté contact. Les données soumises via le formulaire sont envoyées à une catégorie ou un groupe configuré pour recevoir le courrier de contact_form_email.[1] Comme les formulaires de contact traditionnels, il n’est pas nécessaire d’avoir un compte sur le site pour soumettre.
Voici ce qu’un visiteur pourrait voir :
Notez qu’il s’agit d’une publication normale qui peut contenir toutes les instructions que vous souhaitez inclure dans le corps.[2] Actuellement, les noms des champs sont codés en dur et aucune validation réelle n’est effectuée, mais consultez la section TODO ci-dessous. Une fois le message envoyé, il apparaîtra dans le fil de messages du groupe configuré :
Selon la manière dont leurs notifications par e-mail sont configurées, les membres du groupe configuré peuvent également recevoir un e-mail de Discourse :
Configuration
Afin d’utiliser ce plugin, vous devez configurer la réception d’e-mails pour créer de nouveaux sujets ou des messages de groupe. Il n’est pas nécessaire de configurer la réponse par e-mail car le plugin n’envoie pas réellement d’e-mail. Il détourne l’API pour simuler un courrier entrant. (Ceci dit, la réponse par e-mail est une fonctionnalité utile !)
En particulier, ce plugin nécessite :
email_inetenable_staged_users
d’être activés.
Une fois activé, tout sujet étiqueté contact aura un formulaire de contact ajouté à la sortie du plugin topic-above-posts.
Envoyer à un groupe
Étant donné que les gens utiliseront ce formulaire pour soumettre leurs informations personnelles, l’envoi des résultats à un groupe fermé est l’option la plus sûre.
- Créez un nouveau groupe pour les personnes qui géreront les contacts. (J’ai l’habitude de l’appeler « Contact » par souci de simplicité, mais cela pourrait être n’importe quoi, y compris un groupe existant.)
- Ajoutez les membres qui recevront les informations de contact.
- Ne cochez pas les options d’accès. Il doit s’agir d’un groupe fermé.
- Modifiez la visibilité du groupe de manière appropriée pour votre organisation.
- Définissez l’« Adresse e-mail entrante personnalisée » pour qu’elle soit identique au paramètre
contact_form_email. (Par défaut, il s’agit de « contact@example.com ».)
…
Envoyer à une catégorie
L’envoi à une catégorie est également possible en utilisant le paramètre de catégorie « Adresse e-mail entrante personnalisée ». Assurez-vous également d’activer « Accepter les e-mails des utilisateurs anonymes sans compte ».
L’envoi à une catégorie n’est cependant pas recommandé pour les informations de contact ! Si, par hasard, les autorisations d’accès à la catégorie sont modifiées, cela pourrait exposer des informations personnelles à des personnes (ou à des moteurs de recherche) qui ne devraient pas y avoir accès. Il est beaucoup moins probable que cela se produise si les contacts sont envoyés à des messages de groupe à la place.
Limiter qui peut ajouter des formulaires de contact
Il pourrait être assez étrange de voir des formulaires de contact apparaître ici et là, vous voudrez peut-être limiter qui peut utiliser l’étiquette contact. Pour ce faire, créez un nouveau groupe d’étiquettes :
- Depuis la page
/tags, sélectionnez la clé à molette dans le coin supérieur droit. - Sélectionnez « Gérer les groupes d’étiquettes » puis sélectionnez "
Nouveau Groupe". - Renseignez un nom approprié (par exemple, « Personnel uniquement »), ajoutez l’étiquette
contactet sélectionnez « Les étiquettes sont visibles par tout le monde, mais seuls les groupes suivants peuvent les utiliser ». - Choisissez le groupe que vous souhaitez autoriser à ajouter un formulaire de contact (généralement « staff » ou « admins ») et enregistrez le groupe d’étiquettes.
JOURNAL DES MODIFICATIONS
- 25 avril 2024 : Version Alpha.
À FAIRE
- J’aimerais configurer des tests pour m’assurer que rien ne casse lorsque j’apporte des modifications. Je veux particulièrement vérifier que les personnes sans compte peuvent soumettre leurs données.
- Pendant les tests, j’ai découvert une fuite de données majeure. J’ai supprimé cette vulnérabilité particulière, mais j’aurais vraiment besoin d’aide pour les tests.
- Le formulaire n’effectue aucune validation. La seule véritable exigence est que le champ e-mail ressemble à un e-mail. Si quelqu’un laisse une réponse sans ajouter d’e-mail, le formulaire échoue silencieusement.
- Il n’y a aucune protection contre le spam ou les abus.
- Le code est très largement de qualité
my-first-pluginbasé sur des exemples qui utilisaient des conventions obsolètes. Toute suggestion concernant le style est la bienvenue. - J’aime que le formulaire de contact soit associé à un sujet étiqueté « contact », mais c’est compliqué et probablement inutile. J’envisage d’ajouter une nouvelle route qui est simplement le formulaire de contact pour plus de simplicité.
- Les données de contact sont stockées dans la base de données, mais il pourrait être utile d’avoir un panneau d’administration pour voir une liste des contacts.
- Le formulaire est adapté à mes exigences actuelles, mais il serait pratique d’avoir une certaine flexibilité quant aux champs qu’il demande.
Ce paramètre est défini par défaut sur « contact@example.com » mais peut être configuré pour accepter de vraies adresses e-mail. ↩︎
Il est même possible de répondre au formulaire de contact, pour le meilleur ou pour le pire. ↩︎





