Demande d'adhésion à Discourse

:information_source: Résumé Discourse Member Application vous permet d’exécuter un processus de candidature structuré pour les futurs membres avant qu’ils ne rejoignent votre communauté Discourse.
:hammer_and_wrench: Lien vers le dépôt GitHub - R23DPrinting/discourse-member-application · GitHub
:open_book: Guide d’installation Comment installer des plugins dans Discourse

discourse-member-application — Un système de candidature préalable à l’invitation pour les communautés privées

discourse-member-application vous permet d’exécuter 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é.

:link: GitHub : GitHub - R23DPrinting/discourse-member-application · GitHub


L’histoire

Je gère une communauté privée qui utilise le mode sur invitation de Discourse. Nous gérions les demandes d’adhésion manuellement — un formulaire Google, une feuille de calcul, copier-coller les liens d’invitation à la main. Cela fonctionnait, mais cela ne s’adaptait pas à l’échelle et semblait déconnecté de la communauté elle-même.

J’ai cherché un plugin Discourse qui pourrait gérer les candidatures préalables à l’invitation. Je n’en ai pas trouvé qui convenait. Alors, j’ai construit celui-ci.


Démonstration


Fonctionnalités

:clipboard: Formulaire de candidature personnalisable
Le formulaire est entièrement construit via un onglet Champs dans le panneau d’administration — aucun code requis. Types de champs pris en charge : texte, zone de texte, oui/non, boutons radio, groupe de cases à cocher et case à cocher. Les champs prennent en charge les étiquettes, les indices, obligatoire/facultatif, activation/désactivation et la visibilité conditionnelle (afficher un champ uniquement lorsqu’un autre champ a une valeur spécifique).

:magnifying_glass_tilted_left: Tableau de bord d’administration
Examinez et gérez toutes les candidatures à partir d’une page de plugin dédiée. Filtrez par statut (En attente / Approuvé / Rejeté / Utilisé), recherchez par e-mail ou nom d’utilisateur, et paginez à travers de longues listes. Affichez les détails complets de la candidature, ajoutez des notes d’administration privées et approuvez ou rejetez individuellement ou en masse.

:white_check_mark: 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 un retour facultatif. Lorsque le candidat utilise son invitation et crée un compte, le statut de la candidature est automatiquement mis à jour à « Utilisé ». Les membres approuvés peuvent éventuellement être ajoutés automatiquement à un groupe Discourse.

:bar_chart: Analyses
L’onglet Analyses affiche des statistiques récapitulatives (total des candidatures, taux d’approbation, temps d’examen moyen), un graphique de tendance sur 12 semaines des soumissions par rapport aux approbations, et un entonnoir de conversion de soumis → approuvé → utilisé.

:bell: Notifications d’administration
Lorsqu’une nouvelle candidature est soumise, un message privé est envoyé aux noms d’utilisateur configurés (ou à tous les administrateurs si laissé vide).

:artist_palette: UX configurable

  • Texte d’introduction en haut du formulaire (supporte le markdown)
  • Page de succès à /apply/success après la soumission avec un message configurable (supporte le markdown)
  • Bouton « Postuler pour rejoindre » sur la page de connexion et la page d’accueil nécessitant une connexion (activable)
  • Expiration de la candidature — rejet automatique des candidatures en attente après un nombre configurable de jours

:e_mail: Modèles d’e-mail modifiables
Les e-mails de confirmation de soumission et de rejet sont modifiables via Administration → Personnaliser → Modèles d’e-mail — aucune modification de code nécessaire.

:locked: Sécurité
Limitation de débit (5 soumissions par IP par heure), détection des doublons (bloque la nouvelle soumission 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://github.com/R23DPrinting/discourse-member-application.git

Puis reconstruisez :

cd /var/discourse && ./launcher rebuild app

Configuration de votre formulaire

Après l’installation, allez dans Administration → Plugins → Member Application → Fields pour construire votre formulaire de candidature.

Le plugin est livré avec ces champs par défaut (tous modifiables ou supprimables) :

  1. Nom d’utilisateur souhaité
  2. Parlez-nous un peu de vous
  3. Comment avez-vous entendu parler de nous ?
  4. Faites-vous actuellement partie d’autres communautés en ligne similaires ? (oui/non)
  5. Si oui, lesquelles ? (conditionnel — affiché uniquement si le précédent est Oui)
  6. Divulgations des fournisseurs (groupe de cases à cocher)
  7. 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, modifiez-le et utilisez la section « Afficher uniquement lorsque » pour sélectionner un champ parent et une valeur de déclenchement.

Flux de travail

  1. Un futur membre visite votre site et clique sur Postuler pour Rejoindre (ou accède directement à /apply)
  2. Il remplit le formulaire et le soumet — aucun compte requis
  3. Les administrateurs reçoivent une notification par message privé
  4. L’administrateur examine la candidature dans Administration → Plugins → Member Application → Applications
  5. L’administrateur approuve → le candidat reçoit un e-mail d’invitation avec un lien à usage unique
  6. Le candidat utilise l’invitation, crée son compte et le statut de la candidature est mis à jour à Utilisé

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. Laisser vide pour notifier tous les administrateurs.
member_application_invite_group Nom du groupe à ajouter à l’invitation lors de l’approbation (laisser vide pour ignorer)
member_application_expiry_days Rejeter automatiquement les 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. Supporte le markdown. Laisser vide pour masquer.
member_application_success_message Message affiché sur la page /apply/success après la soumission. Supporte le markdown.

Notes

  • Agnostique à la communauté — tout le texte des champs par défaut est configurable via l’onglet Champs
  • Fonctionne 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 bienvenus sur GitHub.

:link: GitHub - R23DPrinting/discourse-member-application · GitHub

5 « J'aime »