| Résumé | Discourse Member Application vous permet de gérer un processus de candidature structuré pour les futurs membres avant qu’ils ne rejoignent votre communauté Discourse. | |
| Lien vers le dépôt | R23DPrinting-group / discourse-member-application · GitLab | |
| Guide d’installation | Comment installer des plugins dans Discourse |
discourse-member-application — Un système de candidature pré-invitation pour les communautés privées
discourse-member-application vous permet de gérer un processus de candidature structuré pour les futurs membres avant qu’ils ne rejoignent votre communauté Discourse. Les candidats remplissent un formulaire public personnalisable à l’adresse /apply, les administrateurs examinent les soumissions et les approuvent ou les rejettent, et les candidats approuvés reçoivent automatiquement un lien d’invitation privé.
GitLab : R23DPrinting-group / discourse-member-application · GitLab
L’histoire
Je gère une communauté privée qui utilise le mode sur invitation de Discourse. Nous gérons les demandes d’adhésion manuellement — un formulaire Google, un tableur, copier-coller des liens d’invitation à la main. Cela fonctionnait, mais cela ne se prêtait pas à une mise à l’échelle et cela semblait déconnecté de la communauté elle-même.
J’ai cherché un plugin Discourse capable de gérer les candidatures pré-invitation. Je n’en ai trouvé aucun qui corresponde. Alors j’ai construit celui-ci.
Démo
Fonctionnalités
Formulaire de candidature personnalisable
Le formulaire est entièrement construit via l’onglet Champs dans le panneau d’administration — aucun code requis. Types de champs pris en charge : texte, zone de texte, oui/non, bouton radio, groupe de cases à cocher et case à cocher. Les champs prennent en charge les libellés, les indices, les champs obligatoires/optionnels, l’activation/désactivation et la visibilité conditionnelle (afficher un champ uniquement lorsqu’un autre champ a une valeur spécifique).
Tableau de bord administrateur
Examinez et gérez toutes les candidatures depuis une page dédiée du plugin. Filtrez par statut (En attente / Approuvé / Rejeté / Échangé), recherchez par e-mail ou nom d’utilisateur, et naviguez dans les grandes listes. Affichez les détails complets de la candidature, ajoutez des notes privées d’administrateur, et approuvez ou rejetez individuellement ou en lot.
Flux d’approbation
L’approbation d’une candidature génère une invitation Discourse à usage unique et l’envoie par e-mail au candidat. Le rejet envoie un e-mail de rejet personnalisable avec des commentaires optionnels. Lorsque le candidat échange son invitation et crée un compte, le statut de la candidature passe automatiquement à « Échangé ». Les membres approuvés peuvent éventuellement être ajoutés automatiquement à un groupe Discourse.
Analyses
L’onglet Analyses affiche des statistiques récapitulatives (nombre total de candidatures, taux d’approbation, durée moyenne d’examen), un graphique de tendance sur 12 semaines des soumissions par rapport aux approbations, et un entonnoir de conversion de soumis → approuvé → échangé.
Notifications administrateur
Lorsqu’une nouvelle candidature est soumise, un message privé est envoyé aux noms d’utilisateur configurés (ou à tous les administrateurs si laissé vide).
UX configurable
- Texte d’introduction en haut du formulaire (prend en charge le Markdown)
- Page de succès à
/apply/successaprès la soumission avec un message configurable (prend en charge le Markdown) - Bouton « Postuler pour rejoindre » sur la page de connexion et la page d’accueil nécessitant une connexion (activable/désactivable)
- Expiration de la candidature — rejet automatique des candidatures en attente après un nombre configurable de jours
Modèles d’e-mails modifiables
Les e-mails de confirmation de soumission et de rejet sont modifiables via Administration → Personnaliser → Modèles d’e-mails — aucune modification de code nécessaire.
Sécurité
Limitation du taux (5 soumissions par adresse IP par heure), détection des doublons (bloque la resoumission avec un e-mail ou un nom d’utilisateur en attente/approuvé, et bloque les e-mails/noms d’utilisateur déjà enregistrés) et invitations à usage unique.
Configuration
Installation
Ajoutez ceci à votre /var/discourse/containers/app.yml :
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://gitlab.com/r23dprinting-group/discourse-member-application.git
Ensuite, reconstruisez :
cd /var/discourse && ./launcher rebuild app
Configuration de votre formulaire
Après l’installation, accédez à Administration → Plugins → Member Application → Champs pour créer votre formulaire de candidature.
Le plugin est livré avec ces champs par défaut (tous modifiables ou supprimables) :
- Nom d’utilisateur souhaité
- Dites-nous un peu de vous
- Comment avez-vous entendu parler de nous ?
- Faites-vous actuellement partie d’autres communautés en ligne similaires ? (oui/non)
- Si oui, lesquelles ? (conditionnel — affiché uniquement si la réponse ci-dessus est Oui)
- Divulgations des fournisseurs (groupe de cases à cocher)
- Confirmation d’honnêteté (case à cocher — champ système, ne peut pas être supprimé)
Utilisez le bouton Ajouter un champ pour créer de nouveaux champs. Utilisez les flèches haut/bas pour réorganiser. Pour rendre un champ conditionnel, éditez-le et utilisez la section « Afficher uniquement lorsque » pour sélectionner un champ parent et une valeur déclencheuse.
Flux de travail
- Un futur membre visite votre site et clique sur Postuler pour rejoindre (ou accède directement à
/apply) - Il remplit le formulaire et le soumet — aucun compte requis
- Les administrateurs reçoivent une notification par message privé
- Un administrateur examine la candidature dans Administration → Plugins → Member Application → Candidatures
- L’administrateur approuve → le candidat reçoit un e-mail d’invitation avec un lien à usage unique
- Le candidat échange l’invitation, crée son compte, et le statut de la candidature passe à Échangé
Paramètres
| Nom | Description |
|---|---|
member_application_enabled |
Activer ou désactiver le formulaire de candidature à /apply |
member_application_notify_usernames |
Noms d’utilisateur séparés par des virgules à notifier par MP lors d’une nouvelle soumission. Laissez vide pour notifier tous les administrateurs. |
member_application_invite_group |
Nom du groupe à ajouter à l’invitation lors de l’approbation (laissez vide pour sauter) |
member_application_expiry_days |
Rejet automatique des candidatures en attente après ce nombre de jours (0 = jamais) |
member_application_expiry_notify |
Envoyer un e-mail de rejet lors de l’expiration automatique des candidatures |
member_application_show_apply_button |
Afficher un bouton « Postuler pour rejoindre » sur la page de connexion et la page d’accueil nécessitant une connexion |
member_application_apply_button_text |
Libellé du bouton Postuler pour rejoindre (par défaut : « Postuler pour rejoindre ») |
member_application_intro_text |
Texte d’introduction affiché en haut du formulaire de candidature. Prend en charge le Markdown. Laissez vide pour masquer. |
member_application_success_message |
Message affiché sur la page /apply/success après la soumission. Prend en charge le Markdown. |
Notes
- Indépendant de la communauté — tous les textes de champs par défaut sont configurables via l’onglet Champs
- Compatible avec le mode
login_required/ sur invitation de Discourse - Sous licence MIT
- Testé sur Discourse 2026.3.0
Les problèmes, les PR et les demandes de fonctionnalités sont les bienvenues sur GitLab.