Плагин для входа с помощью Ethereum

Работает, спасибо!

1 лайк

Привет @michaeld @RGJ, не уверен, что это правильное место для вопроса, но у меня возникает похожая проблема с ffi при использовании репозитория https://github.com/communiteq/discourse-siwe-auth, а также https://github.com/spruceid/discourse-siwe-auth.

I, [2025-08-26T12:22:42.475531 #1]  INFO -- : 
I, [2025-08-26T12:22:42.475839 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::LoadError: can't activate ffi-1.17.1-x86_64-linux-gnu, already activated ffi-1.17.2-x86_64-linux-gnu (Gem::LoadError)
/var/www/discourse/lib/plugin_gem.rb:25:in `load'
/var/www/discourse/lib/plugin/instance.rb:861:in `gem'
/var/www/discourse/plugins/discourse-siwe-auth/plugin.rb:23:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:806:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:806:in `activate!'
/var/www/discourse/lib/discourse.rb:344:in `block in activate_plugins!'
/var/www/discourse/lib/discourse.rb:341:in `each'
/var/www/discourse/lib/discourse.rb:341:in `activate_plugins!'
/var/www/discourse/config/application.rb:196:in `block in <class:Application>'
/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
/var/www/discourse/config/application.rb:196:in `<class:Application>'
/var/www/discourse/config/application.rb:62:in `<module:Discourse>'
/var/www/discourse/config/application.rb:61:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.3.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)

Секция hooks моего саморазмещённого приложения Discourse:

hooks:
  before_code:
    - exec:
        cmd:
          - gem install rubyzip
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/communiteq/discourse-siwe-auth.git
          - git clone https://github.com/discourse/discourse-code-review.git

На данный момент я планирую сделать форк вашего репозитория и обновить версию, так как у меня есть дедлайн для миграции этого экземпляра Discourse. Просто хотел сообщить вам об этом.
Также хотел бы узнать, активно ли плагин поддерживается компанией Communiteq.

Заранее спасибо!

Не глядя на код…

Не может ли быть так, что ffi теперь в ядре, и вам не нужно его добавлять?

Я не очень хорошо разбираюсь в Ruby, поэтому не могу высказать мнение о плагине, но могу подтвердить, что обновление ffi до версии 1.17.2 в форкнутых репозиториях работает отлично. Под «обновлением» я имею в виду изменение plugin.rb следующим образом:

gem 'ffi', '1.17.2', require: false

У меня это сработало, но я бы очень хотел использовать официально поддерживаемый плагин вместо собственного форка.

Мое предложение заключалось в том, чтобы полностью удалить gem. И когда это сработает, отправьте PR с удалённой строкой.

Мы скорее пассивно его поддерживаем. Официальный репозиторий находится в spruceid, но так как мы используем этот плагин на ряде сайтов, на практике именно мы первыми исправляем ошибки. В этот раз вы нас опередили, это всё ещё в нашем списке плагинов для изменения в версии 3.5.

Если никто не создаст PR в официальный репозиторий, я займусь этим до конца этой недели или в начале следующей.

1 лайк

Я бы предпочёл, чтобы вы сами открыли PR, так как у вас, вероятно, есть свои соображения или тесты по поводу плагина, о которых я не знаю, поскольку я мало знаком с этим сервисом, так как сейчас занимаюсь его миграцией.

Спасибо за вашу помощь, информацию и вклад в эту тему.

Я исправил плагин — действительно, всё сводилось к удалению явного подключения gem ffi.

Я также отправил pull request в оригинальный репозиторий. Пока PR не принят, вы можете использовать https://github.com/communiteq/discourse-siwe-auth вместо оригинального репозитория.

Временно я также изменю ссылку в первом сообщении на эту.

2 лайка

Я хотел бы спросить, почему я не вижу кнопку настроек?

Я вижу, что файл .discourse-compatibility этого плагина указывает поддержку версий < 3.2.0.beta2-dev. Возникнут ли проблемы при использовании этого плагина с последней версией Discourse?

1 лайк

Поскольку этот файл указывает на обратную совместимость, отсутствие последних версий в файле .plugin-compatibility — это хорошо.

4 лайка

Мы также обновили плагин для использования WalletConnect v2, так как v2 перестала работать.

Снова используйте https://github.com/communiteq/discourse-siwe-auth вместо оригинального репозитория.

Новая версия

Существует новый и значительно улучшенный форк по адресу GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub

:warning: Вы ДОЛЖНЫ немедленно переключиться :warning:

Если вы используете старую версию плагина, как можно скорее перейдите на эту, поскольку в старой версии обнаружено ряд уязвимостей безопасности.

1 лайк