Salut à tous, j’ai un cas d’usage qui n’est pas encore très bien pris en charge : je dois désactiver l’e-mail d’activation pour les utilisateurs invités — y compris les utilisateurs invités via un lien.
Après avoir créé le sujet ci-dessus, cela a été implémenté, mais uniquement pour les utilisateurs invités par e-mail.
Mon instance Discourse est réservée aux invités et j’envoie effectivement des liens d’invitation par e-mail, mais pas via les e-mails intégrés de Discourse. Je génère les liens d’invitation avec une requête POST vers /invites/link et les stocke dans une base de données externe, puis j’envoie ces liens aux utilisateurs. Ainsi, lorsque les utilisateurs cliquent sur le lien, ils ont déjà vérifié leur adresse e-mail, mais on leur demande de le faire à nouveau.
Je réalise que mon cas d’usage n’est pas particulièrement courant, alors j’ai pensé essayer de créer un plugin simple pour modifier les parties nécessaires de Discourse afin que cela fonctionne comme je le souhaite.
J’ai mis en place une structure de base et ajouté un paramètre du site (no_activation_enabled). Après avoir parcouru le dépôt principal, je pense que c’est peut-être ce fichier qu’il faut modifier :
Je ne suis pas totalement sûr, mais je pense qu’en modifiant conditionnellement (si SiteSetting.no_activation_enabled est activé et si l’utilisateur a été invité par un membre du personnel, peut-être via invite.invited_by.staff ?) la valeur de active à true dans user.attributes, cela pourrait fonctionner :
user.attributes = {
email: invite.email,
username: available_username,
name: name || available_username,
active: false,
trust_level: SiteSetting.default_invitee_trust_level,
ip_address: ip_address,
registration_ip_address: ip_address
}
Mais comment puis-je modifier cela depuis un plugin ? Est-ce même dans le champ d’action des plugins ? Ou peuvent-ils uniquement ajouter des fonctionnalités, sans les modifier ? Ou dois-je remplacer entièrement le fichier invite_redeemer.rb ?
J’ai terminé le tutoriel sur la création de plugins, ainsi que ce guide, mais après des heures à essayer de fouiller dans la base de code, y compris d’autres plugins, j’ai l’impression de me frapper la tête contre un mur… Donc si quelqu’un a des pistes à me proposer, je lui serais extrêmement reconnaissant !