Ho un caso d’uso specifico per cui vorrei sapere se esiste un modo più semplice per farlo.
Non tutti i nostri utenti (tramite il nostro SSO) hanno un account forum attivo
Dobbiamo regolarmente aggiungere utenti a un gruppo del forum per l’accesso a un forum privato
Non è noto se gli utenti abbiano un account forum attivo prima di tentare di aggiungerli al gruppo
Ad esempio:
Ogni mese un membro dello staff dispone di un elenco di oltre 100 account che hanno diritto all’accesso al forum privato. Questi account hanno nomi utente SSO e indirizzi email, ma potrebbero non avere ancora un account forum.
Esiste un modo semplice per aggiungere persone a un gruppo se hanno già un account forum e invitarle al forum (aggiungendole automaticamente al gruppo) se non lo hanno?
Nella pagina Gruppi, il pulsante Aggiungi membri permette di incollare un elenco separato da virgole di nomi utente. Quando questi sono nomi utente validi, verranno aggiunti al gruppo. Quando un nome utente non è valido (cioè non esiste ancora un account forum), l’operazione fallisce e non vengono aggiunti.
A parte scansionare manualmente l’elenco degli utenti aggiunti con successo al gruppo, identificare quali nomi utente non sono stati aggiunti e poi inviare a queste persone un invito al forum (ad esempio (Superseded) Multiple Use Invite Links) - esiste un modo semplice per combinare Invito e Aggiungi al gruppo per una miscela di utenti forum attuali e potenziali?
Hai valutato l’aggiunta di utenti ai gruppi di Discourse utilizzando i parametri SSO add_groups e remove_groups? Per gli utenti che esistono sul sito del tuo provider SSO, puoi creare account Discourse per loro e aggiungerli ai gruppi di Discourse effettuando una chiamata API alla rotta sync_sso. Ci sono alcuni dettagli su come configurarlo qui: Sincronizzare i dati utente SSO con la rotta sync_sso. Possiamo fornirti maggiori dettagli su come configurarlo se sembra un approccio che potrebbe funzionare per te.
Tutti i nostri utenti esistono sul sito SSO (sono venditori nei nostri marketplace), ma solo un sottoinsieme di questi crea attualmente account Discourse per utilizzare i nostri forum. Tale SSO copre sia clienti che venditori: non vorremmo creare automaticamente account Discourse per tutti i clienti (sono troppi!), ma farlo per tutti i venditori semplificherebbe notevolmente le cose.
In questo caso, dobbiamo concedere l’accesso ai gruppi del forum privato solo a venditori specifici, quando iniziano a utilizzare determinati marketplace o servizi.
Ad esempio: un venditore su Marketplace 1 ha un account SSO. Potrebbe creare un account Discourse in questa fase accedendo ai forum.
In seguito, quel venditore ottiene l’accesso a Marketplace 2 e il suo account SSO registrerà tale cambiamento. Abbiamo un gruppo utente personalizzato (e una categoria di forum privata) per quel marketplace.
Se a questo punto ha già un account Discourse, dovremo aggiornare i suoi gruppi in modo che possa vedere l’area del forum privata.
Se non ha ancora un account Discourse, vorremmo crearne uno per lui con i gruppi pertinenti.
Attualmente, il team utilizza “aggiungi al gruppo” con un elenco di nomi utente separati da virgole. Se gli utenti hanno già un account Discourse, ottengono l’accesso al gruppo… se non sono ancora sui forum, non succede nulla.
Per intercettare gli utenti che hanno creato i loro account Discourse dall’ultima volta che è stato aggiunto un batch al gruppo, il team include solitamente tutti i nomi utente qualificati degli ultimi X mesi quando cerca di aggiornare l’iscrizione al gruppo, un processo piuttosto macchinoso.
Se effettui una chiamata API alla rotta sync_sso che include il parametro SSO add_groups, gli utenti esistenti verranno aggiunti al gruppo. Se l’utente non ha ancora un account Discourse, verrà creato un account per lui e verrà aggiunto al gruppo. Puoi utilizzare il parametro SSO remove_groups in modo simile per rimuovere gli utenti dai gruppi. Un altro vantaggio dell’utilizzo della rotta sync_sso per questo scopo è che non richiede all’utente di disconnettersi e riconnettersi a Discourse affinché la modifica abbia effetto.
Se guardare del codice PHP/WordPress di esempio fosse utile per il tuo team, puoi vedere questa implementazione qui: https://github.com/discourse/wp-discourse/blob/master/lib/utilities.php#L378. Il file a cui ho fatto riferimento contiene alcune funzioni di utilità che i siti possono utilizzare per estendere il plugin WP Discourse. È per questo motivo che utilizza funzioni statiche.