الطريق إلى الاستقرار، ثم الدوام، لمجموعة granular_anonymous_and_logged_in_groups_permissions

هذا الموضوع مرفق بموضوع Granular group-based permissions for anonymous and logged in users ، وهو قيد التنفيذ.


لا تزال هناك بعض الأماكن في قواعد الشيفرة المختلفة للنواة، والإضافات، والسمات التي تشير مباشرة إلى مجموعة everyone أو معرف المجموعة (0) مباشرة، دون مراعاة هذا التغيير القادم، أو دون استخدام user.in_any_groups? أو طرق الحارس المختلفة المستخدمة للتعامل مع هذا.

للاسترشاق السريع، بعض معرفات المجموعات التلقائية:

  • 0 - everyone
  • 1 - admins
  • 2 - moderators
  • 3 - staff
  • 4 - anonymous_users
  • 5 - logged_in_users

يخدم هذا الموضوع كمكان مركزي لتتبع الإصلاحات الخاصة بهذا النظام مع اقترابنا من النسخة المستقرة. لا يتم تتبع الإضافات والسمات المخصصة لعملاء Discourse هنا، سأكون لدي قائمة منفصلة داخلياً لهذا الغرض.

قضايا ذات أولوية عالية

قضية أثارها Moin:

  • النواة
    • حول - apply_excluded_groups يُستخدم فقط لإخفاء المشرفين والإداريين المحددين من المجموعات في about_page_hidden_groups. لا معنى لاستخدام الزائف مجموعات مثل 0|4|5 هنا، يجب إضافتها إلى disallowed_groups. نحتاج أيضاً إلى تحديث وصف الإعداد لأنه مضلل.

إضافات النواة

  • Discourse Templates
      • can_use_private_templates? لا يزال يشير إلى everyone مباشرة ولا يستخدم الاختصار _map في إعدادات الموقع.
  • Discourse AI
      • can_see_summary? في امتدادات الحارس لا يستخدم user.in_any_groups?
      • can_attach? في AiBot::Playground لا يستخدم user.in_any_groups?
      • addTopicAdminMenuButton في ai-translation-topic-admin ينظر إلى currentUser.groups على العميل، وهو غير موثوق، يجب إجراء فحص على جانب الخادم لـ content_localization_allowed_groups بدلاً من ذلك
  • Discourse Assign. هناك العديد من القضايا هنا.
    • بدلاً من user_ids_in_groups في AssignmentPermissions، يجب استخدام user_ids_in_groups
    • يجب إضافة 0|4|5 إلى disallowed_groups في assign_allowed_on_groups، لا معنى لأي منها هنا، فقط المجموعات الملموسة هي التي تهم.

إضافات أخرى

  • Activity Pub
    • إزالة فحص showStatusToUser على جانب العميل لـ user.groups وفحص everyone. تغيير activity_pub_post_status_visibility_groups ليكون افتراضياً 4|5.
  • Suggested Edits
    • user_in_suggested_edits_group? يحتاج إلى استخدام user.in_any_groups? في GuardianExtensions. إضافة 1 إلى mandatory_groups في suggested_edits_review_groups وإزالة الحالة الخاصة للإداري في can_review_suggested_edits_in_topic_list
    • إضافة 0|4|5 إلى disallowed_groups في suggested_edits_review_groups و suggested_edits_suggest_groups، هذا الإعداد ليس مقصوداً حقاً لاستخدامه مع هذه الزائف مجموعات
  • Resenha

السمات

المكونات

قضايا ذات أولوية منخفضة

  • النواة
    • is_in_edit_topic_groups في TopicGuardian يجب أن يستخدم الامتداد _map لإعداد الموقع
    • Roleable#whisperer? يجب أن يستخدم user.in_any_groups? ويتخلص من فحص الإداري، إضافة 1 إلى إعداد whispers_allowed_groups كـ mandatory_values
    • إضافة 0|4 إلى disallowed_groups لإعداد الموقع allow_solved_in_groups، هذا يتعامل مع الرسائل الخاصة فقط
    • إضافة 0|4|5 إلى disallowed_groups لـ about_page_extra_groups، هذا مفترض أن يتعامل مع المجموعات الملموسة فقط في صفحة حول
    • ملاحظة في can_view? لـ PresenceChannel أننا بحاجة إلى إزالة فحص Group::AUTO_GROUPS[:everyone] عندما ينتقل هذا التغيير القادم إلى Permanent

إضافات النواة

  • Chat
    • ملاحظة لـ everyone_allowed في أماكن مختلفة في منطق الانضمام/المغادرة التلقائي للدردشة و users_with_unreads لإزالة فحص :everyone عندما ينتقل هذا التغيير القادم إلى Permanent
    • تحديث chat_allowed_group_ids في Chat::Publisher لإزالة الزائف مجموعة الخاصة، كما في FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub يمكن لـ MessageBus الآن التعامل مع الزائف مجموعات بشكل صحيح
  • Assign
    • التخلص من add_model_callback(Group) في plugin.rb، إنه غير ذي صلة/شيفرة ميتة تنظر إلى أسماء المجموعات بدلاً من المعرفات

إضافات أخرى

  • Code Review
    • فحص can_review_code? على code_review_allowed_groups لا يستخدم الامتداد _map ولا يستخدم user.in_any_groups?. إضافة 1 إلى mandatory_groups للإعداد والتخلص من الفحص الخاص للإداري في الحارس. إضافة 0|4|5 إلى disallowed_groups.
  • Needs Love
    • فحص can_needs_love? على needs_love_allowed_groups لا يستخدم الامتداد _map ولا يستخدم user.in_any_groups?. إضافة 1 إلى mandatory_groups للإعداد والتخلص من الفحص الخاص للإداري في الحارس. إضافة 0|4|5 إلى disallowed_groups.
  • Staff Alias
    • فحص can_post_as_staff_alias على staff_alias_allowed_groups لا يستخدم الامتداد _map ولا يستخدم user.in_any_groups?. إضافة 0|4|5 إلى disallowed_groups

السمات

المكونات

الخطوات التالية للهجرة

إعجابَين (2)