أنا على علم بـ Discourse Patreon. وعلى الرغم من أن سؤالي يتعلق بـ Patreon، إلا أن “إضافة Patreon” ليست الإجابة التي أبحث عنها.
هل توجد طريقة أنيقة لتمديد فئة Ruby لتحديد قائمة التحكم في الوصول (ACL) عبر الكود؟
على سبيل المثال: أريد ضمان أن يتمكن فقط أعضاء Patreon من النشر في منتدى معين، وأن يتمكن فقط الأشخاص الذين لديهم مستوى ثقة معين من الرد، وما إلى ذلك… لكنني لا أريد ذلك كخيارات تبديل في واجهة رسومية ما. بل أريد أن أتمكن من تمديد فئة ما في Ruby وتحديد قائمة التحكم في الوصول عبر الكود.
هل هذا شيء سهل أو صعب تنفيذه في Discourse؟
يمكنك فعل أي شيء تريده في ملحق.
لا أنصحك بإدارة قوائم التحكم في الوصول عبر الكود. بالتأكيد يمكنك تغيير السلوك والقواعد، لكن يجب أن تكون إدارة الوصول شفافة وبديهية للمسؤول قدر الإمكان، أليس كذلك؟ كما ستكون هناك أوقات تحتاج فيها إلى إجراء تغيير عاجل. لا تريد الاعتماد على إصدار كود للقيام بذلك!
حاول فهم النموذج الحالي بشكل كامل وانظر ما إذا كان بإمكانك تحقيق ما تحتاجه دون تغييرات في الكود. الأمان عنصر بالغ الأهمية ولكنه معقد، وبينما تستفيد من الإطار الحالي، فإن فريق Discourse يساندك. إذا قمت بتغيير الأشياء، فإنك تتعرض لمخاطر أكبر وتصبح بمفردك.
كما ضع في اعتبارك أن تغييرات الملحق يجب أن تكون قوية بما يكفي لتتكيف مع تطور النواة الأساسية. يجب كتابة التجاوزات بطريقة تجعلها أكثر احتمالية للاستمرار في العمل حتى عندما يتغير الكود الأصلي. هذا توازن دقيق ويمثل عبئًا صيانة. عدم القدرة على تحديث نسختك لأن الملحق سيتسبب في تعطلها يُعد بحد ذاته خطرًا أمنيًا.
في نهاية المطاف، تكون الإضافات مناسبة بشكل خاص للتغييرات السطحية وغير الضارة، لكن تطبيقها على طبقة الأمان يجب أن يتم فقط بعد دراسة جادة. هناك استثناءات بالطبع، مثل إضافات OAuth التي تعمل مع ميزات المنصة التي تتيح لك دمج مزودين جدد بأمان.
مع كل ما سبق، حظًا موفقًا!
إعجاب واحد (1)