Consenti la registrazione di nuovi utenti in modo condizionale

Ciao,
sono nuovo nell’amministrazione e nello sviluppo di Discourse e non parlo Ruby (ancora, anche se sono assolutamente disposto a imparare). Il mio primo compito era installare Discourse, cosa che ho fatto su Digital Ocean utilizzando l’immagine Docker ufficiale. Finora tutto bene: un grande grazie a chi ha reso tutto così semplice!

Il mio prossimo compito è più impegnativo (per me). Mi sono offerto volontario per configurare questo Discourse per un’organizzazione no-profit che desidera limitare la registrazione e la partecipazione ai soli membri dell’organizzazione. Quindi devo in qualche modo modificare, agganciare o sostituire il processo di creazione del nuovo utente, in modo da verificare programmaticamente se l’indirizzo email inserito corrisponde a quello di un membro attuale di un’organizzazione esistente e se la data di scadenza del membro è futura.

L’organizzazione utilizza NeonCRM, che fornisce un’API che rende questa verifica piuttosto semplice. Discourse, per quanto ne so, offre anch’esso un’API che consente di fare tutto ciò che si può fare manualmente. Quindi è più che teoricamente possibile fare ciò che voglio, giusto? La domanda è: qual è l’approccio migliore?

Se, ad esempio, Discourse permette di scrivere un listener di eventi (o un plugin?) che osserva la registrazione di un nuovo utente, esegue questa logica di verifica e può interrompere la registrazione con un messaggio informativo che posso visualizzare in qualche modo (“Spiacente, devi essere un membro dell’Associazione XYZ”), sarebbe fantastico.

In alternativa, potrei immaginare di creare la mia pagina di registrazione utente (in PHP, un linguaggio che conosco bene) che utilizza entrambe le API. Ma in tal caso dovrei in qualche modo modificare la mia installazione di Discourse in modo che la pagina di registrazione reindirizzi l’utente alla mia versione personalizzata.

Quindi mi piacerebbe molto ricevere alcuni suggerimenti su quale dovrebbe essere la strategia complessiva e dove iniziare a imparare come farlo.

Molte grazie!

2 Mi Piace

Puoi limitare le registrazioni per dominio di posta elettronica e, se tutti i tuoi utenti utilizzano lo stesso dominio, nessuno proveniente da un’organizzazione esterna potrà unirsi. Cerca nelle impostazioni allowed email domains.

Un elenco di domini di posta elettronica separati da pipe con cui gli utenti DEVONO registrarsi. ATTENZIONE: Gli utenti con domini di posta elettronica diversi da quelli elencati non potranno registrarsi!*

2 Mi Piace

Ah, potrebbe funzionare se l’insieme dei domini possibili fosse limitato a una dimensione ragionevole, ma in questo caso gli indirizzi email sono arbitrari. Grazie per il suggerimento.

2 Mi Piace

Questo aiuta?

@Jonathan5 grazie per il suggerimento. Ho dato un’occhiata a quel thread e, francamente, sembra un incubo. Inoltre, i membri di questa associazione non utilizzano NeonCRM direttamente per accedere a nulla; lo fanno solo i gestori dell’associazione. È complicato.

Ho avuto un’altra idea. Ho configurato Discourse come accessibile solo su invito. Supponiamo che io mantenga questa impostazione, ma modifichi il testo della pagina di login per indicare qualcosa come: “per favore, vai a my.example.org/discourse-invitation per richiedere un invito”. A quell’URL avrei uno script che utilizza l’API di NeonCRM per verificare l’iscrizione del potenziale utente, utilizza l’API di Discourse per creare l’utente (se la verifica ha successo) e gli invia l’invito. Credo che il mio ragionamento sia corretto. Ho ragione?