DiscourseConnect non mi fa accedere di nuovo

Devo aver combinato qualcosa nell’installazione di DiscourseConnect usando queste istruzioni

Fortunatamente, le istruzioni includono un modo per modificare direttamente le impostazioni di amministrazione, ma sembra che quella di cui ho bisogno specificamente sia cambiata?

Le istruzioni indicano di impostare SiteSetting.enable_sso=false, ma:

root@hestia-app:/var/www/discourse# rails c
[1] pry(main)> SiteSettings.enable_sso=false
NoMethodError: undefined method `enable_sso=' for SiteSettings:Module
from (pry):1:in `__pry__'
[2] pry(main)> 

Qualcuno sa quale potrebbe essere la nuova impostazione di amministrazione?

Grazie!

1 Mi Piace

Ah, Discourse ha gentilmente collegato l’articolo per DiscourseConnect, ed ecco fatto:

cd /var/discourse
./launcher enter app
rails c
irb > SiteSetting.enable_discourse_connect = false
irb > SiteSetting.enable_local_logins = true
irb > exit
exit
1 Mi Piace

È ottimo che tu abbia trovato quella cosa. Se stai riscontrando riferimenti all’impostazione enable_sso nelle pagine delle opzioni del plugin WP Discourse, tali riferimenti dovrebbero essere stati modificati per utilizzare il nuovo nome dell’impostazione enable_discourse_connect nell’ultima versione del plugin (versione 2.3.0).

Se ci sono ancora riferimenti al vecchio nome dell’impostazione nella documentazione del plugin su Meta, dovremo aggiornarli per utilizzare il nuovo nome. Controllerò di nuovo questo all’inizio della prossima settimana.

Tieni presente che, mentre configuri DiscourseConnect, come amministratore puoi bypassare l’accesso SSO andando alla pagina /u/admin-login del tuo sito Discourse. Inserisci il tuo indirizzo email nel modulo presente nella pagina. Ti verrà inviato via email un link di accesso monouso.

1 Mi Piace

lol

Ok… questo mi ha dato la pagina di login, ma dopo aver effettuato l’accesso, mi disconnette e mi reindirizza nuovamente alla pagina di login.

La disconnessione e il reindirizzamento avvengono anche con il metodo /u/admin-login. C’è qualche altro valore che dovrei impostare o deselezionare?

–aggiornamento–

C’è un modo per verificare i valori delle impostazioni dell’amministratore tramite la CLI di rails c?

1 Mi Piace

Su Discourse, sono necessarie le seguenti impostazioni:

  • enable_discourse_connect
  • discourse_connect_url (dovrebbe essere impostato sulla homepage del tuo sito WordPress)
  • discourse_connect_secret (assicurati che il suo valore corrisponda a quello inserito nell’impostazione DiscourseConnect Secret Key sul tuo sito WordPress)

Dovresti anche abilitare l’impostazione del sito verbose_discourse_connect_logging su Discourse. Con questa impostazione abilitata, potresti ottenere alcuni dettagli utili sulla causa del problema nei log degli errori di Discourse.

Su WordPress, assicurati di aver compilato l’impostazione DiscourseConnect Secret Key. L’unica altra impostazione che deve essere abilitata su WordPress è l’impostazione Enable DiscourseConnect Provider.

1 Mi Piace

@simon grazie mille per il consiglio su verbose_discourse_connect_logging!

Ok, quindi enable_discourse_connect è false e enable_local_logins è true

Forse qualcuno sa cosa sta succedendo qui?

Clicchiamo sul link di accesso admin via email

Started GET "/session/email-login/5356b2413338852f25d4382e34fb53a6" for {my.ip.address} at 2021-08-07 02:33:43 +0000
Processing by SessionController#email_login_info as HTML
  Parameters: {"token"=>"5356b2413338852f25d4382e34fb53a6"}
  Rendered default/empty.html.erb within layouts/application (Duration: 0.1ms | Allocations: 11)
  Rendered layout layouts/application.html.erb (Duration: 41.1ms | Allocations: 8102)
Completed 200 OK in 66ms (Views: 43.4ms | ActiveRecord: 0.0ms | Allocations: 12210)
Started GET "/session/email-login/5356b2413338852f25d4382e34fb53a6.json" for {my.ip.address} at 2021-08-07 02:33:48 +0000
Processing by SessionController#email_login_info as JSON
  Parameters: {"token"=>"5356b2413338852f25d4382e34fb53a6"}
Completed 200 OK in 25ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 4548)

Ok, clicchiamo sul link di accesso nell’installazione di Discourse

Started GET "/session/csrf" for {my.ip.address} at 2021-08-07 02:33:56 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 2ms (Views: 0.3ms | Allocations: 308)

Started POST "/session/email-login/5356b2413338852f25d4382e34fb53a6" for {my.ip.address} at 2021-08-07 02:33:57 +0000
Processing by SessionController#email_login as */*
  Parameters: {"second_factor_method"=>"1", "timezone"=>"America/Denver", "token"=>"5356b2413338852f25d4382e34fb53a6"}
Completed 200 OK in 231ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 24272)

Qui qualcosa va storto

Started GET "/" for {my.ip.address} at 2021-08-07 02:33:58 +0000
Processing by ListController#latest as HTML
Redirected to http://my.discourse.install/login
Filter chain halted as :redirect_to_login_if_required rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.0ms | Allocations: 613)

Ora viene semplicemente visualizzata la schermata di accesso, e funziona perfettamente :wink:

Started GET "/login" for {my.ip.address} at 2021-08-07 02:33:59 +0000
Processing by StaticController#show as HTML
  Parameters: {"id"=>"login"}
  Rendered static/login.html.erb within layouts/application (Duration: 38.2ms | Allocations: 1520)
  Rendered layout layouts/application.html.erb (Duration: 103.4ms | Allocations: 12203)
Completed 200 OK in 130ms (Views: 105.7ms | ActiveRecord: 0.0ms | Allocations: 16261)
Started GET "/login.html" for {my.ip.address} at 2021-08-07 02:34:04 +0000
Processing by StaticController#show as HTML
  Parameters: {"id"=>"login"}
  Rendered static/login.html.erb (Duration: 22.0ms | Allocations: 1352)
Completed 200 OK in 25ms (Views: 23.0ms | Allocations: 1970)
1 Mi Piace

Inoltre, qualcuno sa se esiste un comando che posso usare nella CLI $rails c per scaricare tutte le coppie di impostazioni amministrative e relativi valori? Penso di poter semplicemente resettare tutte le configurazioni relative a DiscourseConnect e ricominciare da capo. O forse esiste un comando CLI che resetta tutte le impostazioni amministrative allo stato iniziale?

—Aggiornamento—

lol, ho appena trovato SiteSetting.all, che è un dump brutale di informazioni. Ha dei filtri?

—Aggiornamento—

Ho trovato questa piccola gemma in un altro post:

puts SiteSetting.all.map {|s| "#{s.name}: #{s.value}" } .join "\n"

…e ho resettato tutto ciò che è remotamente correlato a DiscourseConnect. Ricevo ancora il bizzarro reindirizzamento di accesso.

enable_bookmarks_with_reminders: t
meta_category_id: 2
staff_category_id: 3
lounge_category_id: 4
default_theme_id: 1
tos_topic_id: 4
guidelines_topic_id: 5
privacy_topic_id: 6
welcome_topic_id: 7
lounge_welcome_topic_id: 8
admin_quick_start_topic_id: 9
push_api_secret_key: {redacted}
send_welcome_message: f
has_login_hint: f
global_notice: 
default_trust_level: 1
default_email_digest_frequency: 1440
bootstrap_mode_enabled: t
title: {redacted}
site_description: {redacted}
short_site_description: {redacted}
login_required: t
must_approve_users: t
contact_email: {redacted}
contact_url: {redacted}
site_contact_username: system
company_name: {redacted}
base_font: oxanium
heading_font: system
logo: 3
logo_small: 4
force_https: t
allow_user_locale: t
categories_topics: 25
suggested_topics: 7
share_links: email
share_quote_buttons: email
default_dark_mode_color_scheme_id: 1
topics_per_period_in_top_summary: 25
unicode_usernames: f
enable_names: f
enable_user_directory: f
allow_anonymous_posting: t
anonymous_posting_min_trust_level: 0
allow_uncategorized_topics: f
show_copy_button_on_codeblocks: t
max_image_megapixels: 150
max_image_size_kb: 10000
max_attachment_size_kb: 10000
clean_up_uploads: t
external_system_avatars_enabled: f
vapid_public_key: {redacted}
vapid_private_key: {redacted}
vapid_public_key_bytes: {redacted}
vapid_base_url: {redacted}
enable_local_logins: t
enable_discourse_connect: f
pop3_polling_username: {redacted}
enable_discourse_connect_provider: f
discourse_connect_allows_all_return_paths: f
discourse_connect_url: 
discourse_connect_secret: 
1 Mi Piace

Quindi provo ad aggiungere un nuovo account e ricevo il seguente messaggio di errore:

Non siamo riusciti a rilevare se il tuo account è stato creato: assicurati di avere i cookie abilitati.

Cosa?! Forse dovrei semplicemente reinstallare???

—Aggiornamento—

Ho ricevuto l’email di verifica per l’iscrizione, ha funzionato, ma quando ho provato a accedere come nuovo utente ho ottenuto:

Un moderatore deve approvare manualmente il tuo nuovo account prima che tu possa accedere a questo forum. Riceverai un’email quando il tuo account sarà approvato!

lol… :man_facepalming:

—Aggiornamento—

Volevo solo dire che mi piace la complessità di Discourse. È un software straordinario. L’unico forum che si avvicina davvero è XF. Anni fa, quando [unknown] era ancora lo sviluppatore principale di SimpleMachines, anche quello era qualcosa di bellissimo, ma quell’epoca è da tempo finita. Grazie a tutti gli sviluppatori. Avete creato una macchina grande ed elegante.

1 Mi Piace

L’errore reale sembra essere Impossibile verificare l’autenticità del token CSRF. La risposta si trovava in questa discussione: Can't Login to Discourse - CSRF Token Authenticity

Ho aggiunto quanto segue al mio file apache2.conf:

RequestHeader set X-Forwarded-Proto https

Dal log degli errori:

Started POST "/session" for {my.ip} at 2021-08-07 11:45:54 +0000
Processing by SessionController#create as */*
  Parameters: {"login"=>"{me}", "password"=>"[FILTERED]", "second_factor_method"=>"1", "timezone"=>"America/Denver"}
Can't verify CSRF token authenticity.
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Filter chain halted as :verify_authenticity_token rendered or redirected
Completed 403 Forbidden in 13ms (Views: 1.5ms | ActiveRecord: 0.0ms | Allocations: 898)
2 Mi Piace

Sono contento che tu abbia individuato la causa. Sono curioso, come hai configurato il tuo Discourse? Immagino tu non stia usando l’installazione Docker standard?

Ho aggiornato i riferimenti in Install and configure the WP Discourse Wordpress plugin for Discourse :+1:

3 Mi Piace

Ho usato Docker, ma l’ho messo dietro a un reverse proxy su Apache2 per poterlo eseguire come virtual host dietro a Hestia Control Panel. Avevo configurato Hestia con Apache2 invece che con Nginx… quindi è per questo che ho usato Apache2.

Se guardi alla fine di questo thread puoi vedere la mia configurazione.

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.