Afortunadamente, las instrucciones incluyen una forma de manipular directamente la configuración de administrador, pero parece que la que necesito específicamente podría haber cambiado.
Las instrucciones indican establecer SiteSetting.enable_sso=false, pero:
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)>
¿Alguien sabe cuál podría ser la nueva configuración de administrador?
¡Qué bien que lo hayas encontrado! Si estás viendo referencias a la configuración enable_sso en las páginas de opciones del plugin WP Discourse, esas referencias deberían haberse actualizado para usar el nuevo nombre de configuración enable_discourse_connect en la versión más reciente del plugin (2.3.0).
Si aún hay referencias al nombre antiguo de la configuración en la documentación del plugin en Meta, tendremos que actualizarlas para usar el nuevo nombre. Lo verificaré a principios de la próxima semana.
Ten en cuenta que, al configurar DiscourseConnect, como administrador puedes omitir el inicio de sesión mediante SSO yendo a la página /u/admin-login de tu sitio Discourse. Ingresa tu dirección de correo electrónico en el formulario de la página. Se te enviará por correo electrónico un enlace de inicio de sesión de un solo uso.
Vale… esto sí me dio la página de inicio de sesión, pero una vez que inicio sesión, me cierra la sesión y me redirige a la página de inicio de sesión de nuevo.
El cierre de sesión y la redirección también ocurren con el método /u/admin-login. ¿Hay algún otro valor que deba establecer o desestablecer?
–edición para agregar–
¿Hay alguna forma de verificar los valores de configuración de administrador desde la CLI de rails c?
En Discourse, necesitas las siguientes configuraciones:
enable_discourse_connect
discourse_connect_url (debe establecerse en la página principal de tu sitio de WordPress)
discourse_connect_secret (asegúrate de que su valor coincida con el que has introducido en la configuración Clave secreta de DiscourseConnect en tu sitio de WordPress)
Probablemente también debas habilitar la configuración del sitio verbose_discourse_connect_logging en Discourse. Con esta configuración habilitada, podrías obtener algunos detalles útiles sobre la causa del problema en los registros de errores de Discourse.
En WordPress, asegúrate de haber rellenado la configuración Clave secreta de DiscourseConnect. La única otra configuración que debe estar habilitada en WordPress es la configuración Habilitar proveedor de DiscourseConnect.
@simon, ¡muchísimas gracias por el consejo de verbose_discourse_connect_logging!
Bueno, entonces enable_discourse_connect es false y enable_local_logins es true.
¿Alguien sabe qué está pasando aquí?
Hagamos clic en el enlace de correo de inicio de sesión de administrador
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)
Bien, hagamos clic en el enlace de inicio de sesión en la instalación de 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)
Aquí algo sale mal
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)
Ahora simplemente renderizamos la pantalla de inicio de sesión, lo cual funciona perfectamente
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)
Además, ¿alguien sabe si hay un comando que pueda usar en la CLI de $rails c para volcar todos los pares de configuración/valor de administrador? Creo que podría simplemente restablecer todo lo relacionado con DiscourseConnect y empezar de cero. O, bueno, quizás exista un comando de CLI que simplemente restablezca todas las configuraciones de administrador al estado inicial.
—edición para añadir—
Jaja, acabo de encontrar SiteSetting.all; eso es un volcado brutal de información. ¿Tiene filtros?
Así que intento agregar una nueva cuenta y aparece el siguiente mensaje de error:
No podemos detectar si tu cuenta fue creada; asegúrate de tener las cookies habilitadas.
¿Quéee? ¿Quizás debería reinstalar???
—edición para agregar—
Recibí el correo de verificación de registro, funcionó, pero cuando intenté iniciar sesión como usuario nuevo apareció:
Un moderador debe aprobar manualmente tu nueva cuenta antes de que puedas acceder a este foro. Recibirás un correo cuando tu cuenta sea aprobada.
Jaja…
—edición para agregar—
Solo quería decir que me encanta la complejidad de Discourse. Es un software increíble. El único foro que realmente se acerca es XF. Hace años, cuando [unknown] todavía era el desarrollador principal de SimpleMachines, eso también era algo hermoso, pero esa época ya terminó hace mucho. Gracias a todos los desarrolladores. Han creado una máquina excelente y elegante.
Me alegra que hayas encontrado la causa. Tengo curiosidad, ¿cómo has configurado tu Discourse? Supongo que no estás usando la instalación estándar de Docker.
Utilicé Docker, pero lo revertí mediante un proxy inverso detrás de Apache2 para poder ejecutarlo detrás del Panel de Control Hestia como un host virtual. Había configurado Hestia con Apache2 en lugar de Nginx… por eso usé Apache2.
Si te fijas al final de este hilo, puedes ver mi configuración.