Plugin de Login com Ethereum

|||
-|-|-|
:information_source: | Resumo | Habilitar Sign-In com Ethereum no Discourse
:hammer_and_wrench::sob: - | Repositório Original | GitHub - spruceid/discourse-siwe-auth: Discourse plugin for SIWE authentication
:hammer_and_wrench: :white_check_mark: | Repositório Funcional | GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication
:open_book: | Guia de Instalação | Como instalar plugins no Discourse

Funcionalidades

Este plugin habilita o Sign-In com Ethereum no Discourse

Configuração

Requisitos

  • Um fórum Discourse auto-hospedado ou hospedado com um provedor que permite plugins de terceiros, como Communiteq.

Observação

O plugin Sign-In with Ethereum ainda exige que os usuários insiram um e-mail para associar às suas contas após a autenticação pela primeira vez. Se o usuário possuir um endereço ENS, ele será o nome de usuário selecionado por padrão. Assim que um endereço de e-mail for associado, os usuários poderão fazer login usando a opção SIWE a qualquer momento.

Habilitando o Plugin

Para instalar e habilitar o plugin em seu Discourse auto-hospedado, use o seguinte método: Acesse o arquivo app.yml do seu contêiner (presente em /var/discourse/)

cd /var/discourse
nano containers/app.yml

Adicione a URL do repositório do plugin ao arquivo app.yml do seu contêiner:

hooks:
  before_code:                             # <-- adicionado
    - exec:                                # <-- adicionado
        cmd:                               # <-- adicionado
          - gem install rubyzip            # <-- adicionado
  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   # <-- adicionado

Siga o formato existente da linha docker_manager.git; se ela não contiver sudo -E -u discourse, insira - git clone https://github.com/spruceid/discourse-siwe-auth.git.

Reconstrua o contêiner:

cd /var/discourse
./launcher rebuild app

Para desabilitá-lo, remova o plugin ou desmarque “discourse siwe enabled” em (Admin Settings → Plugins → discourse-siwe → discourse siwe enabled).

Discourse Plugins Enable plugin at settings

Habilitar WalletConnect

O suporte ao WalletConnect pode ser fornecido via Infura. Crie um novo projeto Infura para receber um novo ID de projeto Infura. Em seguida, vá para as configurações (as mesmas de antes) e cole o ID nesse local e clique na marca de seleção. Add infura id to plugin settings

JSON RPC

Alternativamente, você pode configurar a instância do WalletConnect com endpoints JSON RPC, como mostrado abaixo:

Fazer isso substituirá a opção de configuração do ID Infura especificamente para o WalletConnect; outros usos de um ID Infura não serão afetados.

Add JSON RPC endpoints

Editar a declaração da mensagem

Por padrão, uma declaração é adicionada às mensagens: “Sign-in to Discourse via Ethereum”. Para editar esta declaração, acesse as configurações (as mesmas de antes) e atualize-a. Add infura id to plugin settings

14 curtidas

alguma discussão sobre dependências aqui Discourse can't find gems specified in the plugin

Encontrei isto no GitHub, parece estar em desenvolvimento ativo também. Parece permitir logins web3 (ainda exigem endereços de e-mail após o login com sua carteira).

No entanto, o desenvolvedor está enfrentando um problema que impede a instalação do plugin e o bootstrapping do discourse depois. Detalhes completos na issue abaixo. Talvez seja um problema muito simples e alguém aqui possa enviar um PR para o desenvolvedor.

1 curtida

Segura minha cerveja :wink:
Solução na issue do Github.

3 curtidas

Isso é incrível, estou tentando agora mesmo. Espero que isso ajude o desenvolvedor também :grinning_face:

EDIT: Acabo com o mesmo erro, parece, embora pareça que a gem está sendo instalada:

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.

Você pode fazer isso, por favor?

2 curtidas

Analisando os logs, postando o que acredito que possa ser relevante.

@moderators talvez uma divisão de tópico para isso? Não há um tópico oficial deste plugin, acho que o desenvolvedor não está no 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)

Não vejo outros erros neste momento (ou estou perdendo, os logs são longos)

1 curtida

Para ser honesto, não estou entendendo o que está acontecendo aqui. :slightly_smiling_face: @RGJ e @michaeld têm o poder de dividir, então talvez eles façam as honras e gerenciem de uma maneira mais sensível do que eu. :slightly_smiling_face::crossed_fingers: (ou, alternativamente, escolha a postagem para dividir, nomeie a categoria para onde ela deve ir e me diga um título para dar a ela :+1:)

1 curtida

Minha sugestão é separada daqui:

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

A categoria mais adequada seria Support ou #plugins (não tenho certeza… como lidamos com plugins que não são desenvolvidos por um membro da Meta… talvez ele se junte à Meta ou possamos convidá-lo pelo GitHub para a Meta um dia?)

EDIT:

Parece que este é o desenvolvedor, então ele está na Meta? @w4ll3

@michaeld fez um PR para isso ontem, mas ainda não foi mesclado. Você pode usar GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication enquanto isso.

3 curtidas

Posso confirmar que isso funciona! Obrigado, Michael.

1 curtida

Para resumir, você precisa tanto do before_code conforme descrito na issue Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub QUANTO da versão mais recente da gem eth para a qual fiz o PR (atualmente não mesclado).

5 curtidas

Um pouco atrasado aqui no fórum oficial, mas olá - Rocco da equipe Spruce.

Obrigado novamente @michaeld pelas correções, resolveu o problema e atualizamos a documentação do nosso lado. Obrigado também por levantar tudo isso - ainda estamos desenvolvendo / mantendo ativamente as coisas em torno do Sign-In with Ethereum.

Também fiquei curioso - existe um caminho para eventualmente tornar isso um plugin oficialmente suportado :grinning: - adoramos o Discourse e queremos descobrir como estender essa funcionalidade para instâncias que não são auto-hospedadas.

2 curtidas

Apenas para esclarecer, o Communiteq suporta este plugin em nossos planos de hospedagem gerenciada, ele está disponível no plano Professional e superiores.

3 curtidas

Minhas desculpas por isso!

Não precisa se desculpar! A hospedagem oficial não o tem (ainda?). Eu só queria enfatizar nosso compromisso com esses plugins web3.

3 curtidas

Sim - infelizmente não é um plugin oficialmente suportado.

Mas definitivamente parabéns pelo suporte da Communiteq! Qualquer coisa para ajudar a apoiar usuários Web3 é realmente incrível.

Do nosso lado, estamos trabalhando de várias maneiras diferentes para apoiar a adoção do Sign-In with Ethereum e o Discourse sempre esteve no topo da nossa lista, e é por isso que, depois de o padronizarmos EIP-4361, criamos o plugin. A outra coisa que tem estado em mente é sobre o que mais adicionar a ele - com o provedor RPC personalizado sendo uma das primeiras partes.

3 curtidas

Este plugin não está funcionando para mim, há algum problema com o plugin que não consigo instalar. Alguém pode compartilhar uma alternativa ou ajudar com este? @michaeld @RGJ

Você precisará compartilhar detalhes se quiser ajuda.

1 curtida

@RGJ quando tento instalar este plugin, a reconstrução falha com este erro

Você está especificando a gem rbsecp256k1 em /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, no entanto, ela não existe!
Procurou por: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec