Rocket.Chat SSO + plugin embed

image

Riepilogo: Questo plugin integra Rocket.Chat con Discourse.

È necessario disporre di un’istanza ospitata di Rocket.Chat separatamente, ad esempio tramite Communiteq, Digital Ocean o un altro provider. Questo plugin integra tale istanza con il tuo forum.

L’integrazione è composta da due parti:

  • Incorporamento della chat nell’interfaccia utente di Discourse
  • Single sign-on tra Discourse e Rocket.Chat, in cui Discourse funge da provider di autenticazione per autenticare, creare e aggiornare gli utenti in Rocket.Chat.

:link: GitHub: GitHub - communiteq/discourse-rocketchat · GitHub
:arrow_right: Installa: Segui la guida all’installazione del plugin.
:pray:t3: Crediti: @jrgong ha avuto l’ottima idea di integrare Rocket.Chat con Discourse e ha anche sviluppato una prima versione dell’interfaccia utente.

Screenshot

La chat è incorporata nell’angolo in basso a destra dell’interfaccia di Discourse. Può essere ridotta ed espansa cliccando sulla barra del titolo. La chat rimane aperta quando navighi nel forum.

Su dispositivi mobili, la chat occupa tutto lo schermo ed è accessibile tramite l’icona di Rocket.Chat nella barra in alto:

Configurazione

L’integrazione deve essere configurata su entrambi i sistemi. Discourse deve sapere dove trovare la chat per poterla integrare nella sua interfaccia utente, mentre Rocket.Chat deve sapere dove trovare Discourse per poter autenticare gli utenti.

Lato Discourse

Amministratore - Plugin - Discourse RocketChat - Impostazioni

discourse_rocketchat_enabled
Attiva o disattiva il plugin.

discourse rocketchat title
Configura qui il titolo della finestra della chat, ad esempio Chat.

discourse rocketchat host
Configura qui il nome host della tua istanza RocketChat, ad esempio chat.example.com.
Non aggiungere il prefisso https:// o simili.

discourse rocketchat default channel
Configura qui il canale predefinito, ad esempio Generale.

discourse rocketchat min trust level
Configura qui il livello di fiducia minimo richiesto agli utenti per poter utilizzare Rocket.Chat, ad esempio 2: membro.

discourse rocketchat click entire bar
Attiva questa opzione se desideri che l’intera barra del titolo sia cliccabile per espandere o nascondere la chat. Disattivala se desideri che siano cliccabili solo i testi “Apri” e “Chiudi”.

discourse rocketchat show menu for groups
Configura i gruppi per i quali desideri che Rocket.Chat mostri il proprio menu, ad esempio staff.

Lato Rocket.Chat

Amministrazione - Impostazioni - CAS

L’integrazione utilizza il protocollo CAS 2.0 per l’autenticazione e l’autorizzazione.

Sostituisci forum.example.com con il nome del tuo forum.

  • URL di base SSO: https://forum.example.com/rocketchat
  • URL di accesso SSO: https://forum.example.com/rocketchat/login
  • Versione CAS: 2.0
  • Affidati al nome utente CAS: abilitato
  • Consenti creazione utenti: abilitato
  • Abilitato: abilitato

Amministrazione - Impostazioni - CAS - Gestione attributi

Per poter sincronizzare l’indirizzo email e il nome completo, è necessario configurare dove trovare tali attributi.

  • Sincronizza sempre i dati utente: abilitato
  • Mappatura attributi: {\"email\":\"%email%\", \"name\":\"%name%\"}

Amministrazione - Impostazioni - Generale

È necessario poter eseguire Rocket.Chat all’interno di un iframe.

  • Limita l’accesso all’interno di qualsiasi iframe: disabilitato

Amministrazione - Impostazioni - Account

Per integrare le due piattaforme, Discourse deve avere il controllo sull’accesso e sulla registrazione, nonché sul nome completo, sul nome e sull’indirizzo email dell’account. Devi disabilitare le seguenti impostazioni sul lato Rocket.Chat:

  • Consenti modifica avatar utente: disabilitato
  • Consenti modifica nome: disabilitato
  • Consenti modifica nome utente: disabilitato
  • Consenti modifica email: disabilitato
  • Mostra modulo di accesso predefinito: disabilitato

Amministrazione - Impostazioni - Account - Registrazione

  • Modulo di registrazione: disabilitato
  • URL segreto modulo di registrazione: (una stringa casuale)

Amministrazione - Impostazioni - Account - Avatar

Rocket.Chat può utilizzare gli avatar di Discourse.
Assicurati di sostituire forum.example.com con il nome del tuo forum.

  • URL provider esterno avatar: https://forum.example.com/rocketchat/avatar/{username}.png
20 Mi Piace

Sono uno dei clienti che utilizza il plugin da un po’ di tempo ed è incredibile!!!

A proposito, @RGJ, potresti aggiungere al titolo dell’argomento che si tratta di una soluzione SSO + Embed per integrare RC nella tua istanza Discourse esistente.

Chiunque stia cercando un’alternativa valida a Babble Chat, questa è la risposta che cercavi!

9 Mi Piace

Molto figo!

Una nota sull’URL dell’avatar: utilizzandolo non verranno visualizzate le immagini per gli utenti con avatar predefiniti (lettere su sfondo colorato), ma solo immagini personalizzate o gravatars. Forse qualcuno conosce un URL diverso che includa tutti gli avatar? :slight_smile:

2 Mi Piace

È un ottimo punto, @DiscourseMetrics, grazie.
Non conoscevo un URL del genere, quindi ne ho creato uno all’interno del plugin. Ora puoi ottenere qualsiasi avatar utilizzando https://forum.example.com/rocketchat/avatar/{username}.png, indipendentemente dal fatto che si tratti di un Gravatar, di un’immagine caricata o di una lettera.

5 Mi Piace

Sembra ottimo! Purtroppo il mio d-header scompare quando lo attivo, hai idea del perché?

1 Mi Piace

Hmm… stai utilizzando una quantità enorme di componenti del tema, quindi è difficile fare il debug senza accesso diretto.

Vedo che stavo utilizzando una classe senza prefisso (.collapsible), che probabilmente causava un conflitto, quindi ora l’ho prefissata.

2 Mi Piace

Grazie Richard, purtroppo non ha funzionato. Ho anche provato a installarlo su uno dei miei altri siti, disattivando tutti i plugin e i TC, ma il problema persiste, come puoi vedere qui: Exploring Exposure - Exploring Exposure Discussions

2 Mi Piace

Ho appena realizzato di aver sviluppato e testato questo plugin solo contro il ramo stable. Il plugin sta generando un errore e si sta bloccando su 2.8.x. Procederò con l’indagine e la risoluzione del problema. Grazie per la tua segnalazione!

@davidkingham Ho risolto il problema, puoi ricompilare e testare nuovamente?

4 Mi Piace

Grazie mille per questo plugin, è incredibilmente utile!

Solo due cose:

  • Al momento sto testando solo la parte di embedding della chat dell’integrazione.
    La funzione SSO del plugin permette un’integrazione senza soluzione di continuità con l’accesso automatico (autologin), o l’utente deve comunque fare clic sul pulsante di accesso SSO per accedere (senza dover inserire alcuna password) a Rocket.Chat?
    Al momento sto riscontrando questo problema con l’integrazione SSO tra Rocket.Chat e Nextcloud e, finora, non sono riuscito a trovare un modo per accedere automaticamente a Rocket.Chat senza dover fare clic sul pulsante SSO.

  • Sarebbe possibile impostare la chat incorporata per aprirsi nella pagina home di Rocket.Chat e non su un canale predefinito?
    Al momento l’unica opzione è impostare un canale predefinito, ma sarebbe molto utile anche avere la chat incorporata che si apre sulla pagina home personalizzabile di Rocket.Chat.
    (Ho appena aperto una issue a riguardo sul repository GitHub qui, spero che non dia fastidio a nessuno).

Grazie ancora mille per il tuo prezioso contributo!

1 Mi Piace

Questa soluzione è utilizzata in phpFox, chiamata ChatPlus. Permette di trasferire tutti i messaggi della chat precedente a Rocket Chat. State pianificando di aggiungere una funzionalità del genere?

A quale “vecchia chat” ti riferisci? Sembra più una funzionalità di Rocket.Chat che di Discourse? O ho frainteso?

Imposta questo script come “Script personalizzato per utenti disconnessi” in Rocket.Chat (assicurati di sostituire l’hostname con il nome del tuo forum nella seconda riga). Nota: non l’ho testato di recente. Non sono sicuro di poterti aiutare se non funziona.

const credentialToken = Random.id();
const login_url = "https://discourse.example.com/rocketchat/login";

const appUrl = Meteor.absoluteUrl().replace(/\/$/, '') + __meteor_runtime_config__.ROOT_URL_PATH_PREFIX;
const delim = (login_url.split('?').length > 1) ? '&' : '?';

var i = document.createElement('iframe');
i.style.display = 'none';
i.onload = function() { 
    Accounts.callLoginMethod({
        methodArguments: [{ cas: { credentialToken } }],
    });
};
i.src = `${ login_url }${ delim }service=${ appUrl }`;
document.body.appendChild(i);

Ci darò un’occhiata tra qualche settimana. Terrò aperta la issue su Github per ricordarmelo.

phpfox ha una funzione per trasferire tutti i vecchi messaggi dalla chat nativa a Rocket.Chat (ChatPlus). È possibile fare lo stesso in Discourse in modo che solo Rocket.Chat possa essere utilizzato come chat? In tal caso, tutti i vecchi messaggi non andrebbero persi e questo plugin potrebbe essere utilizzato su forum vecchi che già contengono molti messaggi.

Discourse non ha una chat nativa, quindi da dove provengono questi messaggi? Inoltre, l’idea alla base di una chat (rispetto a un forum) è che i messaggi della chat siano più volatili.

1 Mi Piace

Intendo i messaggi privati.

Ah, capisco. In tal caso, no.
Non sono sicuro che si tratti davvero di un problema, dato che l’attivazione del plugin Rocket.Chat lo consente comunque, anche quando i messaggi privati sono disabilitati:

2 Mi Piace

Grazie mille per la tua risposta molto informativa.
In precedenza avevo visto lo script che hai pubblicato qui, ma pensavo fosse valido solo per l’autenticazione CAS e non per quella SSO. Proverò a usarlo e verificherò se il browser non blocchi la finestra nascosta.

Grazie mille! A mio parere, poter impostare la home page anche nella finestra di chat incorporata sarebbe un’aggiunta molto interessante. Non vedo l’ora di vederla implementata, nel caso tu trovi le risorse per dedicarci del tempo. Grazie per aver preso in considerazione l’aggiunta di questa opzione.

Grazie per la risposta. Sarà possibile utilizzare Mattermost o MongooseIM per la chat invece di Rocket.Chat? Mattermost è scritto in Go, consuma meno risorse ed è più scalabile. O è possibile farlo solo con Rocket.Chat?

No, questo è un plugin Rocket.Chat per Discourse…

Il plugin utilizza il protocollo CAS 2.0 per stabilire la funzionalità SSO.

È possibile ridisegnare la chat per adattarla al forum? Si può fare con il CSS? Grazie.

Questa risposta soddisfa la tua domanda? https://developer.rocket.chat/guides/developer/ui-and-theming

1 Mi Piace