Plugin Accedi con Ethereum

:information_source: Riepilogo Abilita l’accesso con Ethereum su Discourse
:hammer_and_wrench: Repository GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub
:open_book: Guida all’installazione Come installare i plugin in Discourse

Un plugin per Discourse che permette agli utenti di autenticarsi con il proprio wallet Ethereum utilizzando lo standard Sign-In with Ethereum (SIWE). I wallet iniettati (MetaMask, Safe, ecc.) funzionano immediatamente. I nomi ENS e gli avatar vengono risolti lato server quando è configurato un endpoint RPC.

Requisiti

  • Un forum Discourse ospitato in proprio o da un provider che supporta plugin di terze parti, come Communiteq.

Installazione

Accedi al file app.yml del tuo contenitore:

cd /var/discourse
nano containers/app.yml

Aggiungi l’URL del repository del plugin all’hook after_code:

hooks:
  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/signinwithethereum/discourse-siwe-auth.git # <-- aggiunto

Segui il formato esistente della riga docker_manager.git; se non contiene sudo -E -u discourse, usa invece git clone https://github.com/signinwithethereum/discourse-siwe-auth.git.

Ricostruisci il contenitore:

cd /var/discourse
./launcher rebuild app

Configurazione

Dopo l’installazione, individua il plugin sotto Admin > Plugins e assicurati che sia abilitato:

Clicca su Settings per configurare il plugin:

Da qui puoi personalizzare l’affermazione di accesso e opzionalmente aggiungere un ID progetto WalletConnect / Reown. Senza un ID progetto, sono disponibili solo i wallet iniettati (MetaMask, Safe, ecc.).

Impostazioni

Impostazione Descrizione
Discourse siwe enabled Abilita o disabilita l’autenticazione Sign-In with Ethereum.
Siwe ethereum rpc url Opzionale. Un endpoint Ethereum JSON-RPC utilizzato per la risoluzione dei nomi/avatar ENS e la verifica della firma EIP-1271 (richiesta per i wallet smart contract come SAFE). Si consiglia un provider dedicato (Alchemy, Infura). Esempio: https://mainnet.infura.io/v3/YOUR_KEY.
Siwe project ID Opzionale. Un ID progetto WalletConnect / Reown. Senza di esso, sono disponibili solo i wallet iniettati (MetaMask, Safe, ecc.). Per abilitare WalletConnect, crea un ID progetto gratuito su dashboard.reown.com.
Siwe statement L’affermazione leggibile dall’utente mostrata nel messaggio SIWE. Di default è “Sign in with Ethereum”.

Come funziona

Quando un utente clicca sul pulsante di accesso Ethereum, il plugin apre un’autenticazione dedicata. L’utente connette il proprio wallet, firma un messaggio SIWE e viene autenticato tramite una strategia OmniAuth lato server.

Dopo il primo accesso, agli utenti viene chiesto di associare un indirizzo email al proprio account. Se è configurata un’URL RPC e l’indirizzo connesso ha un nome ENS, il nome viene risolto e verificato lato server e suggerito come nome utente predefinito. Gli avatar ENS vengono recuperati tramite il servizio metadati ENS e utilizzati come foto profilo.

In alternativa, gli utenti esistenti possono connettere i propri account Ethereum dalle impostazioni del profilo.

14 Mi Piace

discussione su dipendenze qui Discourse can't find gems specified in the plugin

Trovato questo su GitHub, sembra anche attivamente sviluppato. Sembra che consenta i login web3 (richiede comunque indirizzi email dopo aver effettuato l’accesso con il proprio wallet).

Tuttavia lo sviluppatore sta affrontando un problema che impedisce l’installazione del plugin e il bootstrapping di discourse dopo. Tutti i dettagli nel problema sottostante. Forse è un problema molto semplice e qualcuno qui può inviare una PR per lo sviluppatore.

1 Mi Piace

Tieni la mia birra :wink:
Soluzione nel problema di Github.

3 Mi Piace

Fantastico, ci sto provando subito. Spero che questo aiuti anche lo sviluppatore :grinning_face:

MODIFICA: Finisco con lo stesso errore, anche se sembra che la gemma venga installata:

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' fallito con ritorno #<Process::Status: pid 777 exit 1>
Posizione del fallimento: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec fallito con i parametri {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap fallito con codice di uscita 1
** FALLITO IL BOOTSTRAP ** si prega di scorrere verso l'alto e cercare messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Puoi farlo per favore?

2 Mi Piace

Sto esaminando i log, pubblico cose che ritengo possano essere pertinenti.

@moderatori forse una divisione dell’argomento per questo? Non c’è un argomento ufficiale di questo plugin, non credo che lo sviluppatore sia su 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)

Non vedo altri errori al momento (o li sto perdendo, i log sono lunghi)

1 Mi Piace

A dire il vero, non sto seguendo il succo di quello che sta succedendo qui. :slightly_smiling_face: @RGJ e @michaeld hanno il potere di dividere, quindi forse faranno l’onore e lo gestiranno in modo più sensibile di quanto farò io. :slightly_smiling_face::crossed_fingers: (o, in alternativa, scegli il post da cui dividere, nomina la categoria in cui vuoi che vada e fammi sapere un titolo da dargli :+1:)

1 Mi Piace

Il mio suggerimento è di separarlo da qui:

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

La categoria più adatta sarebbe Support o #plugins (non sono sicuro… come gestiamo i plugin che non sono sviluppati da un membro di Meta… forse si unirà a Meta o potremo invitarlo tramite GitHub a Meta un giorno?)

MODIFICA:

Sembra che questo sia lo sviluppatore, quindi è su Meta? @w4ll3

@michaeld ha creato una PR per questo ieri, ma non è ancora stata unita. Nel frattempo, puoi usare GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication.

3 Mi Piace

Confermo che funziona! Grazie Michael.

1 Mi Piace

Quindi, per riassumere, hai bisogno sia di before_code come descritto nel problema Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub SIA della versione più recente della gemma eth per la quale ho creato la PR (attualmente non unita).

5 Mi Piace

Un po’ in ritardo qui sul forum ufficiale, ma ehi, sono Rocco del team Spruce.

Grazie ancora @michaeld per le correzioni, hanno risolto il problema e abbiamo aggiornato la documentazione da parte nostra. Grazie anche per aver sollevato la questione: stiamo ancora sviluppando / mantenendo attivamente le cose relative a Sign-In with Ethereum.

Ero anche curioso: c’è una possibilità di rendere questo un plugin ufficialmente supportato :grinning: - amiamo Discourse e vogliamo capire come estendere questa funzionalità a istanze non self-hosted.

2 Mi Piace

Solo per chiarezza, Communiteq supporta questo plugin sui nostri piani di hosting gestito, è disponibile sul piano Professional e superiori.

3 Mi Piace

Mi scuso per questo!

Non c’è bisogno di scusarsi! L’hosting ufficiale non ce l’ha (ancora?). Volevo solo sottolineare il nostro impegno per questi plugin web3.

3 Mi Piace

Purtroppo non è un plugin ufficialmente supportato.

Ma sicuramente complimenti per il supporto da parte di Communiteq! Qualsiasi cosa per aiutare a supportare gli utenti Web3 è davvero fantastica.

Dal nostro lato stiamo lavorando in vari modi per supportare l’adozione di Sign-In with Ethereum e Discourse è sempre stato in cima alla nostra lista, motivo per cui dopo averlo standardizzato EIP-4361 abbiamo creato il plugin. L’altra cosa che è stata in primo piano è cosa altro aggiungere ad esso, con il provider RPC personalizzato come una delle prime parti.

3 Mi Piace

Questo plugin non funziona per me, c’è qualche problema con il plugin, non riesco a installarlo, qualcuno può condividere un’alternativa o aiutarmi con questo @michaeld @RGJ

Dovrai condividere i dettagli se desideri aiuto.

1 Mi Piace

@RGJ quando tento installare questo plugin, la ricompilazione fallisce con questo errore

Stai specificando la gemma rbsecp256k1 in /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, tuttavia non esiste!
Cercato: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec