إضافة تسجيل الدخول باستخدام Ethereum

:information_source: ملخص تمكين تسجيل الدخول باستخدام إيثريوم على Discourse
:hammer_and_wrench: المستودع GitHub - signinwithethereum/discourse-siwe-auth: Discourse plugin for SIWE authentication · GitHub
:open_book: دليل التثبيت كيفية تثبيت الإضافات في Discourse

إضافة Discourse تتيح للمستخدمين المصادقة باستخدام محفظة إيثريوم الخاصة بهم باستخدام
معيار تسجيل الدخول باستخدام إيثريوم (SIWE). تعمل المحافظ المُحقونة
(مثل MetaMask و Safe وغيرها) بشكل فوري. يتم حل أسماء ENS والصور الرمزية
على جانب الخادم عند تكوين نقطة نهاية RPC.

المتطلبات

  • منتدى Discourse مستضاف ذاتيًا أو مستضاف مع مزود يدعم
    الإضافات من جهات خارجية، مثل Communiteq.

التثبيت

الوصول إلى ملف app.yml الخاص بالحاوية:

cd /var/discourse
nano containers/app.yml

أضف عنوان URL لمستودع الإضافة إلى خطاف 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 # <-- تمت الإضافة

اتبع التنسيق الحالي لسطر docker_manager.git؛ إذا لم يحتوي
على sudo -E -u discourse، فاستخدم
git clone https://github.com/signinwithethereum/discourse-siwe-auth.git بدلاً من ذلك.

أعد بناء الحاوية:

cd /var/discourse
./launcher rebuild app

التكوين

بعد التثبيت، ابحث عن الإضافة تحت Admin > Plugins وتأكد من
تفعيلها:

انقر فوق الإعدادات لتكوين الإضافة:

من هنا يمكنك تخصيص بيان تسجيل الدخول وإضافة معرف مشروع WalletConnect / Reown اختياريًا. بدون معرف مشروع، تكون المحافظ المُحقونة فقط (مثل MetaMask و Safe وغيرها) متاحة.

الإعدادات

الإعداد الوصف
Discourse siwe enabled تمكين أو تعطيل المصادقة عبر تسجيل الدخول باستخدام إيثريوم.
Siwe ethereum rpc url اختياري. نقطة نهاية JSON-RPC الخاصة بإيثريوم تُستخدم لحل أسماء ENS والصور الرمزية والتحقق من التوقيعات EIP-1271 (مطلوب لمحافظ العقود الذكية مثل SAFE). يُوصى بمزود مخصص (مثل Alchemy أو Infura). مثال: https://mainnet.infura.io/v3/YOUR_KEY.
Siwe project ID اختياري. معرف مشروع WalletConnect / Reown. بدونه، تكون المحافظ المُحقونة فقط (مثل MetaMask و Safe وغيرها) متاحة. لتمكين WalletConnect، قم بإنشاء معرف مشروع مجاني في dashboard.reown.com.
Siwe statement البيان المقروء للإنسان الذي يظهر في رسالة SIWE. الافتراضي هو “Sign in with Ethereum”.

كيف يعمل

عندما يضغط المستخدم على زر تسجيل الدخول بإيثريوم، تفتح الإضافة
مصادقة مخصصة. يقوم المستخدم بتوصيل محفظته، وتوقيع رسالة SIWE،
ويتم المصادقة عليه عبر استراتيجية OmniAuth على جانب الخادم.

بعد أول تسجيل دخول، يُطلب من المستخدمين ربط عنوان بريد إلكتروني بحسابهم. إذا تم تكوين عنوان URL لـ RPC وكان العنوان المتصل يحتوي على اسم ENS،
يتم حل الاسم والتحقق منه على جانب الخادم واقتراحه كاسم مستخدم افتراضي. يتم جلب صور رمزية ENS عبر خدمة بيانات تعريف ENS واستخدامها كصورة الملف الشخصي.

بدلاً من ذلك، يمكن للمستخدمين الحاليين ربط حسابات إيثريوم الخاصة بهم عبر
إعدادات ملفهم الشخصي.

14 إعجابًا

بعض المناقشة حول التبعيات هنا Discourse can't find gems specified in the plugin

تم العثور على هذا على GitHub، ويبدو أنه قيد التطوير بنشاط أيضًا. يبدو أنه يسمح بتسجيل الدخول إلى web3 (لا يزال يتطلب عناوين البريد الإلكتروني بعد تسجيل الدخول باستخدام محفظتك).\n\nhttps://github.com/spruceid/discourse-siwe-auth\n\nومع ذلك، يواجه المطور مشكلة تمنع تثبيت المكون الإضافي وتمهيد Discourse بعد ذلك. التفاصيل الكاملة في المشكلة أدناه. ربما تكون مشكلة بسيطة جدًا ويمكن لشخص ما هنا تقديم طلب سحب (PR) للمطور.\n\nCannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub

إعجاب واحد (1)

امسك بيرة :wink:
الحل في مشكلة جيت هاب.

3 إعجابات

هذا رائع، سأجربه الآن. آمل أن يساعد هذا المطور أيضًا :grinning_face:

تحرير: انتهى بي الأمر بنفس الخطأ على ما يبدو على الرغم من أنه يبدو أن الجوهرة يتم تثبيتها:

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.

هل يمكنك فعل ذلك من فضلك؟

إعجابَين (2)

بالمرور عبر السجلات، أنشر أشياء أعتقد أنها قد تكون ذات صلة.

@moderators ربما تقسيم موضوع لهذا؟ لا يوجد موضوع رسمي لهذه الإضافة، لا أعتقد أن المطور موجود في ميتا.

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)

لا أرى أي أخطاء أخرى في هذه اللحظة (أو أنني أفوتها، السجلات طويلة)

إعجاب واحد (1)

بصراحة، أنا لا أتابع جوهر ما يحدث هنا. :slightly_smiling_face: @RGJ و @michaeld لديهما القدرة على الانقسام، لذا ربما سيقومان بالتشريف وإدارته بطريقة أكثر حساسية مما سأفعل. :slightly_smiling_face::crossed_fingers: (أو، بدلاً من ذلك، اختر المنشور الذي تريد الانقسام منه، وقم بتسمية الفئة التي تريد نقله إليها، وأخبرني بالعنوان الذي يجب أن أمنحه إياه :+1:)

إعجاب واحد (1)

اقتراحي هو تقسيمه من هنا:

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

الفئة الأنسب ستكون Support أو #plugins (لست متأكدًا.. كيف نتعامل مع الإضافات التي لم يطورها عضو في Meta.. ربما سينضم إلى Meta أو يمكننا دعوته عبر Github إلى Meta يومًا ما؟)

تحرير:

يبدو أن هذا هو المطور، لذا فهو على Meta؟ @w4ll3

@michaeld made a PR for this yesterday, but it’s not merged yet. You can use GitHub - communiteq/discourse-siwe-auth: Discourse plugin for SIWE authentication in the meanwhile.

3 إعجابات

يمكنني تأكيد أن هذا يعمل! شكراً مايكل.

إعجاب واحد (1)

لتلخيص الأمر، تحتاج إلى كل من before_code كما هو موضح في المشكلة Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub وإلى الإصدار الأحدث من gem eth الذي قمت بإنشاء طلب السحب (غير المدمج حاليًا) له.

5 إعجابات

في وقت متأخر بعض الشيء هنا في المنتدى الرسمي، ولكن مرحبًا - روكو من فريق Spruce.

شكرًا مرة أخرى @michaeld على الإصلاحات هناك، فقد عالجت الأمر وقمنا بتحديث الوثائق من جانبنا. شكرًا أيضًا على طرح كل هذا - ما زلنا نعمل بنشاط على تطوير / صيانة الأشياء المتعلقة بتسجيل الدخول باستخدام Ethereum.

كنت فضوليًا أيضًا هنا - هل هناك مسار لجعل هذا مكونًا إضافيًا مدعومًا رسميًا في النهاية :grinning: - نحن نحب Discourse ونريد معرفة كيفية توسيع هذه الوظيفة إلى مثيلات غير مستضافة ذاتيًا.

إعجابَين (2)

للتوضيح فقط، يدعم Communiteq هذه الإضافة على خطط الاستضافة المُدارة لدينا، وهي متاحة في الخطة الاحترافية وما فوقها.

3 إعجابات

اعتذاري عن ذلك!

لا داعي للاعتذار! الاستضافة الرسمية لا تحتوي عليها (حتى الآن؟). أردت فقط التأكيد على التزامنا بهذه الإضافات الخاصة بـ web3.

3 إعجابات

نعم - للأسف، إنه ليس مكونًا إضافيًا مدعومًا رسميًا.

ولكن بالتأكيد تحية لـ Communiteq على الدعم! أي شيء للمساعدة في دعم مستخدمي Web3 هو أمر رائع حقًا.

من جانبنا، نعمل على طرق مختلفة لدعم اعتماد Sign-In with Ethereum وكان Discourse دائمًا على رأس قائمتنا، ولهذا السبب بعد أن قمنا بتوحيده EIP-4361 أنشأنا المكون الإضافي. الشيء الآخر الذي كان في مقدمة اهتماماتنا هو حول ما يمكن إضافته إليه - مع توفير RPC المخصص كأحد الأجزاء الأولى.

3 إعجابات

هذه الإضافة لا تعمل معي، هناك مشكلة ما في الإضافة ولا يمكنني تثبيتها، هل يمكن لأحد مشاركة بديل أو المساعدة في هذه الإضافة @michaeld @RGJ

ستحتاج إلى مشاركة التفاصيل إذا كنت تريد المساعدة.

إعجاب واحد (1)

@RGJ عند محاولة تثبيت هذه الإضافة، يفشل إعادة البناء بهذا الخطأ:

أنت تحدد الجوهرة rbsecp256k1 في /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb، ولكنها غير موجودة!
تم البحث عن: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec