هذا موضوع مكمّل لموضوع 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 ننظر فقط إلى المجموعات المرئية، ويجب أن يكون هذا فحصًا من جهة الخادم مثلevaluateلسيارات الوصول (ACLs)
- About - يُستخدم
إضافات النواة
- 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
- إزالة حل المشكلة المؤقت
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
- إزالة حل المشكلة المؤقت
قوالب
مكونات
مشاكل ذات أولوية منخفضة
- النواة (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
إضافات النواة
- الدردشة (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
- فحص
قوالب
مكونات
الخطوات التالية للترحيل
- ترحيل
allowed_group_idsلنموذجAiAgent