Sto integrando l’SSO di Discourse, ma sto riscontrando un problema per cui l’utente creato riceve i privilegi di amministratore, anche se il payload SSO specifica esplicitamente che non dovrebbe averli.
Sto utilizzando l’ultima beta: 2.8.0.beta6 [ f3273bd43e ]
Ecco un esempio:
Ho appena provato con omar+member9@306.dev, che è un dominio completamente diverso e non è incluso in DISCOURSE_DEVELOPER_EMAILS, ma il problema persiste: l’utente ha ottenuto l’accesso da amministratore.
La chiave API che sto utilizzando per firmare l’SSO appartiene a un amministratore; questo può influenzare qualcosa?
Ho appena integrato SSO su un sito Discourse esistente e riscontro questo comportamento.
Il sito è in esecuzione tramite Docker (repository discourse_docker).
Mi sono loggato nel container e ho acceduto al database PostgreSQL: l’utente ha il flag admin impostato su false nel database, quindi non viene aggiornato dal metodo “make_developer_admin”.
Per agevolare il debug di DiscourseConnect, puoi attivare l’impostazione del sito verbose_discourse_connect_logging. Abilitando questa impostazione, diagnostiche dettagliate appariranno in YOURSITE.com/logs. Assicurati di la casella warnings in fondo a YOURSITE.com/logs.
Sembra un bug di filtraggio legato all’API di ActiveRecord; ho registrato le query e non vedo l’ID utente nel filtro WHERE, quindi sembra che i dati delle notifiche vengano recuperati a livello globale.
Probabilmente la stessa cosa sta accadendo con i forum e gli argomenti: in qualche modo viene ignorato il filtro per ID utente e vengono recuperati tutti i dati.
Sembra che user.notifications non stia applicando il filtro; ho aggiunto manualmente una condizione where nel codice e questo ha risolto il problema nella visualizzazione delle notifiche nella modale, ma nella pagina dei dettagli viene utilizzato un percorso di codice diverso, quindi vengono ancora visualizzati tutti gli elementi. Qual è la soluzione corretta?
Ho avviato un nuovo contenitore Docker da zero e spostato le risorse/i dati, il che ha risolto il problema. La ricostruzione del contenitore esistente non ha aiutato.