Hallo zusammen, ich habe einen Anwendungsfall, der derzeit nicht gut unterstützt wird: Ich muss die Aktivierungs-E-Mail für eingeladene Benutzer deaktivieren – einschließlich Benutzer, die über einen Link eingeladen wurden.
Nachdem ich das oben genannte Thema erstellt habe, wurde dies implementiert, aber nur für Benutzer, die per E-Mail eingeladen wurden.
Meine Discourse-Instanz ist nur per Einladung nutzbar, und ich versende Einladungslinks zwar per E-Mail, aber nicht über die integrierten Discourse-E-Mails. Ich generiere die Einladungslinks mit einer POST-Anfrage an /invites/link, speichere sie in einer externen Datenbank und sende die Links von dort aus an den Benutzer. Wenn Benutzer also auf den Link klicken, haben sie ihre E-Mail bereits verifiziert, werden aber dennoch erneut dazu aufgefordert.
Mir ist bewusst, dass mein Anwendungsfall nicht besonders verbreitet ist, daher dachte ich, ich versuche es mit einem einfachen Plugin, um die erforderlichen Teile von Discourse so anzupassen, dass es wie gewünscht funktioniert.
Ich habe ein Grundgerüst erstellt und eine Site-Einstellung (no_activation_enabled) hinzugefügt. Nach der Suche im Core-Repository vermute ich, dass dies die Datei ist, die bearbeitet werden muss:
Ich bin mir nicht ganz sicher, aber ich denke, wenn man bedingt (falls SiteSetting.no_activation_enabled und falls der Benutzer von einem Mitarbeiter eingeladen wurde, vielleicht invite.invited_by.staff?) active in user.attributes auf true setzt, könnte das funktionieren:
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
}
Aber wie gehe ich vor, um dies aus einem Plugin heraus zu ändern? Ist das überhaupt im Rahmen dessen, was Plugins leisten können? Können sie nur Dinge hinzufügen, aber nicht ändern? Oder muss ich die gesamte Datei invite_redeemer.rb ersetzen?
Ich habe die Einführung zum Erstellen von Plugins sowie diesen Leitfaden abgeschlossen, aber nach stundenlangem Suchen im Codebase, einschließlich anderer Plugins, habe ich das Gefühl, gegen eine Wand zu laufen… Wenn also jemand Tipps für mich hat, wäre ich超 dankbar!