Ciao a tutti, ho un caso d’uso che al momento non è supportato in modo adeguato: devo disabilitare l’email di attivazione per gli utenti invitati, inclusi gli utenti invitati tramite un link.
Dopo aver avviato l’argomento sopra, questa funzionalità è stata implementata, ma solo per gli utenti invitati tramite email.
La mia istanza di Discourse è accessibile solo su invito e in realtà invio i link di invito via email, ma non utilizzando le email integrate di Discourse. Genero i link di invito tramite una richiesta POST a /invites/link e li memorizzo in un database esterno, da cui invio i link all’utente. Quindi, quando gli utenti cliccano sul link, hanno già verificato la propria email, ma vengono poi richiesti di farlo nuovamente.
Capisco che il mio caso d’uso non sia particolarmente comune, quindi ho pensato di provare a creare un semplice plugin per modificare le parti necessarie di Discourse e farlo funzionare come mi serve.
Ho già impostato una struttura di base e aggiunto un’impostazione del sito (no_activation_enabled). Dopo aver cercato nel repository principale, credo che questo possa essere il file da modificare:
Non sono sicuro al 100%, ma penso che potrebbe funzionare modificando condizionalmente (se SiteSetting.no_activation_enabled è attivo e se l’utente è stato invitato da uno staff, forse tramite invite.invited_by.staff?) il valore di active in true all’interno di user.attributes:
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
}
Ma come posso modificare questo da un plugin? È persino possibile all’interno delle funzionalità offerte dai plugin? O possono solo aggiungere cose, non modificarle? Oppure devo sostituire l’intero file invite_redeemer.rb?
Ho completato l’introduzione alla creazione di plugin, nonché questa guida, ma dopo ore passate a scavare nel codice, inclusi altri plugin, mi sembra di sbattere la testa contro un muro… Quindi, se qualcuno ha qualche consiglio per me, ne sarei davvero grato!