أنا أستخدم Discourse لمجتمع ألعاب، حيث لا معنى لفصل حسابات Steam و Discord الخاصة بالمستخدمين، بل قد يسبب ذلك مشاكل فقط. كيف يمكنني منع المستخدمين من فصل حساباتهم؟ أعرف أن إضافة SAML تمنع ذلك، لكن بما أنني استخدمت Discourse لمزامنة الرتب داخل اللعبة وعلى Discord، فأنا حقًا لا أريد أن يقوم المستخدمون بفصل حساباتهم. بل أفضل أن أقوم أنا بفصلها يدويًا في حال لزم الأمر.
كملاحظة جانبية، هل من الممكن من جانب المشرفين عرض معرف Steam64 ومعرفات Discord؟ فهذه المعرفات ليست سرية بحد ذاتها، وستكون معلومات مفيدة جدًا ومتاحة بسهولة. كما أنها غير معروضة عبر واجهة برمجة التطبيقات (API)، وهي محدودة جدًا بالنسبة لحالتي الاستخدام.
يمكنك إخفاء زر الحذف بذلك. بهذه الطريقة لا يمكن للمستخدمين التعطيل؟
.btn-danger, .json-schema-editor-modal .json-editor-btn-delete {
display: none;
}
هذا قد يحقق الهدف جزئيًا، لكن هل يعرف أحد ما إذا كانت هناك طريقة لجعل ذلك مستحيلًا؟ نظريًا، يمكنهم ببساطة الدخول إلى عنصر فحص المتصفح (Inspect Element) وإلغاء إخفائه.
تعديل: يبدو أنه بعد إجراء بعض البحث في هذا الشأن، وجدت هذا: discourse/lib/auth/managed_authenticator.rb at main · discourse/discourse · GitHub
ما وجدته مثيرًا للاهتمام هو جزء “can revoke”، لست متأكدًا تمامًا مما إذا كان بإمكاني تعديل مصادقة ديسكورد المدمجة. هل يعرف أحد ما إذا كان ذلك ممكنًا؟
تعديل 2: حاولت تعديل تسجيل الدخول عبر ستيم في ديسكورد لكنني لم أكن ناجحًا (ربما بسبب نقص معرفتي بلغة Ruby)، لكن هذا ما حاولت:
# frozen_string_literal: true
# name: Steam authentication with Discourse
# about: Authenticate with Discourse with Steam
# version: 2.0.1
# author: J. de Faye, tgxworld
# omniauth-openid is not included in core since v2.4.0.beta10
unless defined? OmniAuth::Strategies::OpenID
gem 'ruby-openid', '2.9.2', require: false
gem 'rack-openid', '1.3.1', require: false
gem 'omniauth-openid', '1.0.1'
end
gem 'omniauth-steam', '1.0.6'
register_svg_icon "fab-steam" if respond_to?(:register_svg_icon)
def can_revoke?
false
end
register_asset 'stylesheets/steam-login.scss'
[
"../lib/auth/steam_authenticator.rb",
"../lib/validators/enable_steam_logins_validator.rb"
].each { |path| load File.expand_path(path, __FILE__) }
auth_provider authenticator: Auth::SteamAuthenticator.new, icon: 'fab-steam'
للمرجعية، الملف الذي عدلته هو من هذا الامتداد.
تعديل: كنت أعدل الجزء الخاطئ تمامًا من الامتداد، وقد تمكنت من تعطيل الميزة بالكامل لتسجيل الدخول عبر ستيم. الآن أحتاج فقط إلى معرفة كيفية القيام بذلك مع تسجيل الدخول عبر ديسكورد لأن ذلك ملف أساسي.