Plugin de inicio de sesión con Ethereum

|||
-|-|-|
:information_source: | Resumen | Habilitar Iniciar sesión con Ethereum en Discourse
:hammer_and_wrench::sob: - | Repositorio Original | GitHub - spruceid/discourse-siwe-auth: Discourse plugin for SIWE authentication
:hammer_and_wrench: :white_check_mark: | Repositorio Funcional | GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication
:open_book: | Guía de Instalación | Cómo instalar plugins en Discourse

Características

Este plugin habilita Iniciar sesión con Ethereum en Discourse

Configuración

Requisitos

  • Un foro de Discourse autoalojado o alojado con un proveedor que permita plugins de terceros, como Communiteq.

Nota

El plugin Iniciar sesión con Ethereum todavía requiere que los usuarios ingresen un correo electrónico para asociarlo con sus cuentas después de autenticarse por primera vez. Si el usuario posee una dirección ENS, será el nombre de usuario seleccionado por defecto. Una vez que se asocia una dirección de correo electrónico, los usuarios pueden iniciar sesión utilizando la opción SIWE en cualquier momento.

Habilitar el Plugin

Para instalar y habilitar el plugin en tu Discourse autoalojado, usa el siguiente método: Accede al archivo app.yml de tu contenedor (presente en /var/discourse/)

cd /var/discourse
nano containers/app.yml

Agrega la URL del repositorio del plugin a tu archivo app.yml del contenedor:

hooks:
  before_code:                             # <-- added
    - exec:                                # <-- added
        cmd:                               # <-- added
          - gem install rubyzip            # <-- added
  after_code:
    - exec:
      cd: $home/plugins
      cmd:
        - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
        - sudo -E -u discourse git clone https://github.com/spruceid/discourse-siwe-auth.git   # <-- added

Sigue el formato existente de la línea docker_manager.git; si no contiene sudo -E -u discourse, entonces inserta - git clone https://github.com/spruceid/discourse-siwe-auth.git.

Recompila el contenedor:

cd /var/discourse
./launcher rebuild app

Para deshabilitarlo, ya sea elimina el plugin o desmarca “discourse siwe enabled” en (Admin Settings → Plugins → discourse-siwe → discourse siwe enabled).

Discourse Plugins Enable plugin at settings

Habilitar WalletConnect

WalletConnect puede ser proporcionado a través de Infura. Crea un nuevo proyecto Infura para recibir un nuevo ID de proyecto Infura. Luego ve a la configuración (la misma que antes) y pega el ID en esa ubicación y haz clic en la marca de verificación. Add infura id to plugin settings

JSON RPC

Alternativamente, puedes configurar la instancia de WalletConnect con puntos finales JSON RPC, como se muestra a continuación:

Hacer esto anulará la opción de configuración del ID de Infura específicamente para WalletConnect; otros usos de un ID de Infura no se verán afectados.

Add JSON RPC endpoints

Editar la declaración del mensaje

Por defecto, se agrega una declaración a los mensajes: Iniciar sesión en Discourse a través de Ethereum. Para editar esta declaración, accede a la configuración (la misma que antes) y actualízala. Add infura id to plugin settings

14 Me gusta

alguna discusión sobre dependencias aquí Discourse can't find gems specified in the plugin

Lo encontré en GitHub, parece que también se está desarrollando activamente. Parece que permite inicios de sesión web3 (aún requiere direcciones de correo electrónico después de iniciar sesión con tu billetera).

Sin embargo, el desarrollador se enfrenta a un problema que impide la instalación del plugin y el arranque de Discourse después. Todos los detalles en el problema a continuación. Quizás sea un problema muy simple y alguien aquí pueda enviar una PR para el desarrollador.

1 me gusta

Sostén mi cerveza :wink:
Solución en el issue de Github.

3 Me gusta

Eso es increíble, lo estoy probando ahora mismo. Espero que esto también ayude al desarrollador :grinning_face:

EDITAR: Termino con el mismo error, parece, aunque parece que la gema se está instalando:

version 2.3.0.
Successfully installed rubyzip-2.3.2
1 gem installed
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 777 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

¿Puedes hacer esto, por favor?

2 Me gusta

Revisando los registros, publico lo que creo que podría ser relevante.

@moderadores ¿quizás una división de temas para esto? No hay un tema oficial de este plugin, no creo que el desarrollador esté en meta.

I, [2022-07-04T16:43:46.394301 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate eth-0.5.1, because openssl-3.0.0 conflicts with openssl (~> 2.2)

No veo ningún otro error en este momento (o me los estoy perdiendo, los registros son largos).

1 me gusta

Para ser sincero, no entiendo de qué va todo esto. :slightly_smiling_face: @RGJ y @michaeld tienen el poder de dividir, así que quizás hagan los honores y lo gestionen de una manera más sensible de la que yo lo haré. :slightly_smiling_face::crossed_fingers: (o, alternativamente, elige la publicación de la que dividir, nombra la categoría en la que quieres que vaya y hazme saber un título para darle :+1:)

1 me gusta

Mi sugerencia es dividirla de aquí:

https://meta.discourse.org/t/web-3-0-features/203321/19?u=marcp

La categoría más adecuada sería Support o #plugins (no estoy seguro… ¿cómo tratamos los plugins que no son desarrollados por un miembro de Meta? ¿quizás él se unirá a Meta o podremos invitarlo a través de GitHub a Meta algún día?)

EDITAR:

Parece que este es el desarrollador, así que está en Meta? @w4ll3

@michaeld hizo un PR para esto ayer, pero aún no se ha fusionado. Mientras tanto, puedes usar GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication.

3 Me gusta

¡Puedo confirmar que esto funciona! Gracias, Michael.

1 me gusta

En resumen, necesitas tanto el before_code como se describe en el problema Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub COMO la versión más reciente del gem eth para la que hice el PR (actualmente sin fusionar).

5 Me gusta

Un poco tarde aquí en el foro oficial, pero hola, Rocco del equipo de Spruce.

Gracias de nuevo @michaeld por las correcciones, se encargaron de ello y actualizamos la documentación por nuestra parte. También gracias por plantear todo esto, todavía estamos desarrollando / manteniendo activamente cosas en torno a Sign-In with Ethereum.

También tenía curiosidad: ¿hay alguna forma de convertir esto en un plugin oficialmente compatible? :grinning: - nos encanta Discourse y queremos encontrar la manera de extender esta funcionalidad a instancias que no están autohospedadas.

2 Me gusta

Solo para aclarar, Communiteq admite este complemento en nuestros planes de alojamiento administrado, está disponible en el plan Profesional y superiores.

3 Me gusta

¡Mis disculpas por eso!

¡No hay necesidad de disculparse! El hosting oficial no lo tiene (¿todavía?). Solo quería enfatizar nuestro compromiso con estos plugins web3.

3 Me gusta

Sí, lamentablemente no es un plugin compatible oficialmente.

Pero definitivamente felicitaciones por el apoyo de Communiteq. Cualquier cosa para ayudar a apoyar a los usuarios de Web3 es realmente increíble.

Por nuestra parte, estamos trabajando en diversas formas de apoyar la adopción de Sign-In with Ethereum y Discourse siempre estuvo en lo más alto de nuestra lista, por eso, después de estandarizarlo EIP-4361, creamos el plugin. La otra cosa que ha estado en nuestra mente es qué más añadirle, siendo el proveedor de RPC personalizado una de las primeras piezas.

3 Me gusta

Este plugin no me funciona, hay algún problema con el plugin, no puedo instalarlo, ¿alguien puede compartir una alternativa o ayudarme con este @michaeld @RGJ

Necesitarás compartir detalles si quieres ayuda.

1 me gusta

@RGJ cuando intento instalar este plugin, la reconstrucción falla con este error

Estás especificando la gema rbsecp256k1 en /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, ¡sin embargo, no existe!
Buscado: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec