هذا الموضوع مرافق لموضوع Granular group-based permissions for anonymous and logged in users ، وهو قيد العمل (WIP).
لا تزال هناك عدة أماكن في قواعد بيانات الشيفرة المختلفة للنواة والإضافات والثيمات تشير مباشرةً إلى مجموعة everyone أو معرف المجموعة (0)، دون أخذ هذا التغيير القادم في الاعتبار، أو دون استخدام user.in_any_groups? أو طرق الحارس (guardian) المختلفة المستخدمة للتعامل مع ذلك.
للمرجع السريع، بعض معرفات المجموعات التلقائية:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
يخدم هذا الموضوع كمكان مركزي لتتبع إصلاحات هذه المنظومة كلما اقتربنا من الإصدار المستقر. الإضافات والثيمات المخصصة لعملاء Discourse لا يتم تتبعها هنا، لدي قائمة داخلية منفصلة لهذا الغرض.
مشاكل ذات أولوية عالية
مشكلة أثيرت بواسطة Moin:
- النواة (Core)
- حول (About) - يُستخدم
apply_excluded_groupsفقط لإخفاء المشرفين والمديرين المحددين من المجموعات فيabout_page_hidden_groups. لا معنى لاستخدام مجموعات وهمية مثل0|4|5هنا، يجب إضافتها إلىdisallowed_groups. نحتاج أيضًا إلى تحديث وصف الإعداد لأنه مضلل. - EditCategoryTabsController - في
_wouldLoseAccessdiscourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub ننظر فقط إلى المجموعات المرئية، ويجب أن يكون هذا فحصًا من جانب الخادم (server-side check) مثلevaluateلصلاحيات الوصول (ACLs)
- حول (About) - يُستخدم
إضافات النواة (Core plugins)
- قوالب Discourse (Discourse Templates)
-
- ما زال
can_use_private_templates?يشير إلىeveryoneمباشرةً ولا يستخدم اختصار_mapفي إعدادات الموقع.
- ما زال
-
- ذكاء اصطناعي Discourse (Discourse AI)
-
can_see_summary?في امتدادات الحارس (guardian extensions) لا يستخدمuser.in_any_groups?
-
can_attach?في AiBot::Playground لا يستخدمuser.in_any_groups?
-
addTopicAdminMenuButtonفيai-translation-topic-adminينظر إلىcurrentUser.groupsعلى العميل (client)، وهو أمر غير موثوق، قم بفحص من جانب الخادم لـcontent_localization_allowed_groupsبدلاً من ذلك
-
- إسناد Discourse (Discourse Assign). الكثير من المشاكل هنا.
- بدلاً من
user_ids_in_groupsفيAssignmentPermissions، يجب علينا استخدامuser_ids_in_groups - يجب أن تحتوي
assign_allowed_on_groupsعلى0|4|5فيdisallowed_groups، فلا معنى لأي منها هنا، فالمجموعات الفعلية هي الوحيدة المهمة.
- بدلاً من
إضافات أخرى
- Activity Pub
- إزالة الفحص على مستوى العميل (clientside checking) لـ
user.groupsوفحصeveryoneفيshowStatusToUser. تغييرactivity_pub_post_status_visibility_groupsليكون الافتراضي4|5.
- إزالة الفحص على مستوى العميل (clientside checking) لـ
- التعديلات المقترحة (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، فهذا الإعداد ليس مقصودًا للاستخدام مع هذه المجموعات الوهمية حقًا
- يحتاج
- البث المباشر (Live)
- إزالة حلّ المشكلة المؤقت (workaround) لـ
untargetable_group_idsفيpublic_room_message_bus_targetsحيث تم معالجة ذلك في FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub - تغيير الافتراضي لـ
resenha_allowed_groupsمن0إلى4|5
- إزالة حلّ المشكلة المؤقت (workaround) لـ
الثيمات (Themes)
المكونات (Components)
مشاكل ذات أولوية منخفضة
- النواة (Core)
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)
إضافات النواة (Core plugins)
- الدردشة (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للإعداد والتخلص من فحص المديرين الخاص في الحارس (guardian). أضف0|4|5إلىdisallowed_groups.
- فحص
- يحتاج إلى عناية (Needs Love)
- فحص
can_needs_love?علىneeds_love_allowed_groupsلا يستخدم امتداد_mapولا يستخدمuser.in_any_groups?. أضف1إلىmandatory_groupsللإعداد والتخلص من فحص المديرين الخاص في الحارس (guardian). أضف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
- فحص
الثيمات (Themes)
المكونات (Components)
الخطوات التالية للهجرة (Migration)
- هجرة نموذج
AiAgentالخاص بـallowed_group_ids