أذونات دقيقة قائمة على المجموعات للمستخدمين المجهولين والمسجلين

كان هناك ما يُعرف بمجموعة وهمية مربكة تاريخيًا تسمى @everyone داخل قاعدة الكود لدينا، ويمكن استخدامها في:

  • إعدادات الموقع من نوع group_list
  • أذونات التصنيفات
  • مجموعات الوسوم

في بعض الحالات، يُفسّر البعض @everyone على أنها تعني “جميع المستخدمين المجهولين وجميع المستخدمين المسجلين دخولهم”، بينما يفسرها آخرون على أنها تعني فقط “جميع المستخدمين المسجلين دخولهم”. والحقيقة في حالة إعدادات الموقع هي أنها تعني في معظم الحالات فقط “جميع المستخدمين المسجلين دخولهم”.

يزيد من هذا الارتباك حقيقة أن مجموعة @everyone هذه يمكن استخدامها في إعدادات الموقع حيث لا معنى لمنح “جميع المستخدمين المجهولين والمسجلين دخولهم” حق الوصول إلى الميزة، مثل pm_tags_allowed_for_groups.

هذا الأمر مربك أيضًا من منظور تمكين الميزات وتجربة المطورين، حيث قد نرغب فعليًا في تمكين بعض التغييرات القادمة أو إعدادات أخرى لـ “جميع المستخدمين المجهولين والمسجلين دخولهم”.

الحل

نحن نُدخل مجموعتين وهميتين تلقائيتين منفصلتين:

  • anonymous_users (ID 4) - تمثل المستخدمين المجهولين الذين يزورون موقعك دون حساب
  • logged_in_users (ID 5) - تمثل جميع المستخدمين المسجلين دخولهم إلى موقعك، وهي مشابهة في تأثيرها للمجموعة التلقائية trust_level_0، لكنها أكثر تحديدًا

تم إدخال هاتين المجموعتين بالفعل، لكنهما ستأخذان مفعولهما فقط عند تمكين التغيير القادم granular_anonymous_and_logged_in_groups_permissions في موقعك.

عند تمكين التغيير القادم، سيتم تحويل أي إعداد يحتوي على everyone كمجموعة مختارة تلقائيًا إلى معرف مجموعة logged_in_users، لذا لن يتغير أي بيانات في جدول إعدادات الموقع عند تبديل التغيير القادم. وعندما يصبح التغيير القادم دائمًا، سنقوم بهجرة البيانات لجميع إعدادات المجموعات لإجراء هذا التغيير.

بالإضافة إلى ذلك، قمنا بوضع علامة disallowed_group على مجموعة anonymous_users في عدة إعدادات لموقع حيث لا معنى لها، مثل personal_message_enabled_groups.

يتم التعامل مع التناقضات مع أسماء المجموعات الموجودة تلقائيًا، عن طريق إعادة تسمية المجموعات الموجودة وتحديث إشارات المجموعة في المنشورات.

ماذا عن أذونات الوسوم والتصنيفات؟

ستبقى هذه الأذونات دون تغيير، لأن مفهوم «الجميع» فيها يختلف بعدة طرق ولا يعتمد على المجموعة التلقائية الأساسية.

9 إعجابات

انتظر… ماذا :flushed_face: هل يعني ذلك أن جميع الفئات التي هي الآن عامة (للجميع) ستتحول إلى فئات مغلقة تتطلب تسجيل الدخول عند تمكين ذلك؟

لا، لأن:

يتعلق هذا فقط بإعدادات الموقع من نوع قائمة المجموعات التي تسمح لك حاليًا باختيار “الجميع” كما يلي:

إعجاب واحد (1)

هل يمكن لأي شخص مساعدتي في فهم كيفية تعديل مكونات السمة الخاصة بي؟

لقد حاولت استخدام مكون copy-post كمثال، لأنني أتذكر أنه يستخدم أيضًا إعداد مجموعة يمنح الوصول إلى الميزة. وكان هناك مشكلة لأن المجموعة الوهمية «الجميع» تتطلب فحصًا منفصلًا، تمامًا كما في مكوني، لأن مقارنة معرفات المجموعات التي ينتمي إليها المستخدم لا تساعد — بل يجب فحص هذه المعرفات بشكل منفصل. لهذا السبب توقعت حدوث تغيير حديث هناك، لأنني أفهم أن المجموعات الجديدة هي أيضًا مجموعات وهمية، ويجب فحص المعرف بشكل منفصل. هل هناك شيء أغفله يفسر لماذا لا يكون هذا ضروريًا هنا؟

يحتوي مكون تصفية المفضلة المفضلة لدي على إعدادين للمجموعات: أحدهما يسمح للمجموعات بحفظ تصفحاتها الخاصة، والآخر يقدم تصفحات قياسية.
بشكل افتراضي، يمكن فقط لأعضاء مجموعة trust_level_0 استخدام التصفحات المخصصة، لأن فقط المستخدمين المسجلين يمكنهم تخزين البيانات في حقل مستخدم مخصص. لذا، هنا سيكون من المنطقي إذا لم أسمح بـ anonymous_users كخيار. كيف أفعل ذلك في مكون سمة؟ هل هناك مثال جاهز لهذا؟

الإعداد الافتراضي للتصفحات الافتراضية هو «الجميع»، لأنني أجد أنه مفيد حتى للمستخدمين غير المسجلين أن يتمكنوا من رؤية واستخدام التصفحات الافتراضية. المشكلة هي أن everyone يتحول إلى logged_in_users حتى مع أنني اخترته تحديدًا. هل يجب علي إنشاء هجرة مخصصة لهذا الغرض بحيث يستمر المشرفون الذين يستخدمون حاليًا everyone في الحصول على تصفحات للمستخدمين غير المسجلين في المستقبل؟ متى يجب أن تتم هذه الهجرة؟ أم أن كل مشرف يجب أن يغير ذلك بشكل فردي بعد تشغيل الهجرة؟

هل كل ما أقلق بشأنه غير ضروري حقًا؟ إذا كانت هناك حاجة إلى تعديلات، فإن أقل من أربعة أسابيع تبدو إطارًا زمنيًا قصيرًا جدًا بالنظر إلى عدد المكونات التي يديرها المجتمع والتي قد تتأثر محتملًا.
بالإضافة إلى «copy-post»، نظرت أيضًا في مكون تصفية غير المجاب، لكنني لم أجد أي تغييرات هناك أيضًا. أشعر أنني أغفلت شيئًا مهمًا. بعد كل شيء، تم تمكين التغيير افتراضيًا منذ أسبوع تقريبًا. لهذا أفترض أنه لو كانت هناك حاجة إلى تعديلات، لكانت المكونات الرسمية قد تم تحديثها بالفعل.

إعجاب واحد (1)

تم دمج 3 منشورات في موضوع موجود: تحديث موضوع الأساس

بالنظر إلى هذه المكونات، فإن currentUser?.groups غير موثوقة على أي حال، لأنها تتضمن فقط المجموعات المرئية للمستخدم، وقد لا تُسلسل المجموعات التي ينتمي إليها المستخدم وتؤثر على الصلاحيات هنا:

نتجاوز هذه المشكلة في النواة/الإضافات من خلال القيام بأشياء مثل هذا في مُسلسل المستخدم الحالي:

لكن من الواضح أن هذا غير متاح لمكونات السمات/السمات وإعداداتها.

هـ، لست متأكدًا، سأحتاج إلى التفكير في هذا. إذا كنت تقصد حقًا everyone، فسيكون من الضروري تغييرها إلى كل من logged_in_users و anonymous_users. كانت هذه هي المشكلة الرئيسية مع everyone كما ورد في المنشور الأصلي — بعض الناس فسروها على أنها تعني فقط المستخدمين المسجلين، بينما فسر آخرون أنها تعني المسجلين + المجهولين، وكان الأمر يعتمد كثيرًا على الموقف.

اخترت تفسير «فقط المستخدمين المسجلين» لأنه كان أكثر أمانًا من وجهة نظر أمنية.

كلا، لم أفكر ببساطة في مكونات السمات/السمات وإعداداتها وكيف ستتأثر بهذا التغيير، كنت أركز في الغالب على إعدادات الموقع. ستكون أشياء مثل هذه صعبة للغاية في العثور عليها، لأنها لا تستخدم حتى ثابت AUTO_GROUPS:

image

على أي حال، سأفكر في بعض الحلول لهذه المشكلات، ولن أنتقل بهذا التغيير إلى الإصدار المستقر حتى أتمكن من حلها.

3 إعجابات

تحديث سريع: لدي فكرة حول كيفية التعامل مع هذا الأمر، ونحن نخوض بعض المناقشات الداخلية حوله. آمل ألا يستغرق الأمر وقتاً طويلاً :crossed_fingers:

إعجاب واحد (1)

هذا هو حالتي بالضبط :upside_down_face:؛ لذا، لإنشاء فئة مخصصة للمستخدمين المسجلين فقط، قمت بضبط إذن الوصول الخاص بها على TL0 فقط، معتمداً على مجموعة المستخدمين التلقائية TL0 للتمييز بين المستخدمين المسجلين والزوار.

أتساءل ما إذا كان هناك جدول يوضح التمييز في معنى هذا المصطلح في سياقات مختلفة. هذه الاختلافات محيرة ومقلقة في آن واحد — لأن الناس على الأرجح لم يكونوا يعرفون المعنى الفعلي لهذا الإعداد عند اختياره في البداية، لذا سيشعرون بالحاجة إلى التحقق من الإعدادات ذات الصلة. حالياً، لا يمكنني سوى التحقق من كل مكان يتم فيه تعيين المجموعات بشكل فردي، والتأكد مما كان يعنيه سابقاً من خلال رؤية من تم تغييره إليه بعد تفعيل ميزة المجموعات التفصيلية — مما يشعرني وكأنني أبحث في الظلام.

إعجابَين (2)

هذه فكرة جيدة… قد أتمكن من استخدام الذكاء الاصطناعي للبحث في جميع الأماكن التي تُستخدم فيها الإعدادات القائمة على المجموعات وإخراج ما إذا كان من الممكن حتى لـ anonymous الوصول إلى هذه الأشياء.

هناك العديد من الإعدادات التي تمنع بالفعل اختيار مجموعة anonymous_users، لذلك قد تكون نقطة بداية جيدة… سأعود هنا بالنتائج.

لدي طلبات سحب (PRs) لهذا الأمر أعمل عليها الآن:

سيكون هناك طلبات سحب إضافية وتغييرات في التوثيق قريبًا بعد ذلك.

3 إعجابات

@Noble_Fish ، هذه هي القائمة المولدة بواسطة الذكاء الاصطناعي للإعدادات القائمة على المجموعات، وما الغرض من كل إعداد، وكيف ينطبق ذلك على المستخدمين المجهولين/المسجلين. كن على علم بأنني واثق إلى حد ما من صحة هذه القائمة، ولكن كما هو الحال مع أي شيء مولد بالذكاء الاصطناعي، من الجيد التحقق من الحقائق بنفسك.

أعتقد أن الأعمدة الأكثر إثارة للاهتمام هي “everyone كان يشمل أيضًا anonymous_users قبل التغيير؟”، إذا كانت الإجابة Yes (نعم)، فهذا يعني أن everyone (الجميع) كان يشمل المستخدمين المسجلين والمجهولين قبل تطبيق هذا التغيير القادم.

كما ترون، هناك عدد قليل فقط منها، لذا فهذه هي الإعدادات الوحيدة التي يحتاج المشرف إلى إضافة anonymous_users إليها صراحةً في إعدادات الموقع:

  • hidden_post_visible_groups - أحتاج في الواقع إلى تغيير هذا الإعداد للسماح بـ anonymous_users، فالرمز البرمجي ليس صحيحًا تمامًا لهذا التغيير القادم.
  • lazy_load_categories_groups - أحتاج إلى إصلاح هذا أيضًا، فهو يقوم بفحص everyone (الجميع) بشكل زائد تم تنفيذه بالفعل داخل user.in_any_groups?
  • styleguide_allowed_groups - هذا يعمل كما هو، ولكن سأقوم أيضًا بضبطه قليلاً

عندما يصبح هذا التغيير القادم دائمًا، سيتم استخدام مجموعتي logged_in_users (المستخدمون المسجلون) و anonymous_users (المستخدمون المجهولون) حصريًا، وسيتم حذف everyone (الجميع).


الإعداد الوصف هل ينطبق logged_in_users؟ هل ينطبق anonymous_users؟ هل كان everyone يشمل anonymous_users قبل التغيير؟ نتيجة الرمز البرمجي
whispers_allowed_groups السماح بالتواصل الخاص داخل المواضيع لأعضاء المجموعات المحددة. لا لا لا تم حظر everyone و logged_in_users و anonymous_users؛ ويتوقع الرمز البرمجي في وقت التشغيل عضوية مجموعة ملموسة.
hidden_post_visible_groups السماح لأعضاء هذه المجموعات بعرض المنشورات المخفية. يمكن للمستخدمين من فريق الإدارة عرض المنشورات المخفية دائمًا. نعم لا نعم يفحص everyone قبل رفض المستخدمين المجهولين؛ وإلا يستخدم in_any_groups?.
about_page_hidden_groups عدم عرض أعضاء مجموعات معينة في صفحة /about. لا لا لا يستخدم group_users؛ المجموعات الوهمية ليس لها صفوف أعضاء.
about_page_extra_groups المجموعات التي سيتم عرضها في صفحة “حول” أسفل المشرفين. لا لا لا يحمل المجموعات الملموسة وأعضائها للعرض.
anonymous_posting_allowed_groups المجموعات المسموح لها بتمكين النشر المجهول. نعم لا لا بوابة المستخدم المسجل عبر in_any_groups?؛ تم حظر anonymous_users.
personal_message_enabled_groups السماح للمستخدمين في هذه المجموعات بإنشاء رسائل شخصية. نعم لا لا بوابة المستخدم المسجل عبر in_any_groups?؛ تم حظر anonymous_users.
shared_drafts_allowed_groups السماح للمستخدمين في هذه المجموعات بمشاهدة وتحرير المسودات المشتركة. نعم لا لا بوابة الحارس (Guardian) للمستخدم؛ تم حظر anonymous_users.
here_mention_allowed_groups المجموعات المسموح لها بذكر @here. نعم لا لا يتطلب مستخدمًا مصادقًا؛ تم حظر anonymous_users.
approve_unless_allowed_groups يجب اعتماد المنشورات التي ينشئها المستخدمون غير الموجودين في هذه المجموعات. نعم لا لا بوابة المستخدم عبر in_any_groups?؛ تم حظر anonymous_users.
approve_new_topics_unless_allowed_groups يجب اعتماد المواضيع الجديدة التي ينشئها المستخدمون غير الموجودين في هذه المجموعات. نعم لا لا بوابة المستخدم عبر in_any_groups?؛ تم حظر anonymous_users.
skip_review_media_groups يتم إرسال المنشورات التي تحتوي على وسائط مضمنة من المستخدمين خارج هذه المجموعات للمراجعة. نعم لا لا بوابة المستخدم عبر in_any_groups?؛ تم حظر anonymous_users.
content_localization_allowed_groups المجموعات المسموح لها بتحديث المحتوى المترجم. نعم لا لا بوابة الحارس/المستخدم؛ تم حظر anonymous_users.
email_in_allowed_groups المجموعات المسموح لها بنشر مواضيع جديدة عبر البريد الإلكتروني. نعم لا لا بوابة مستخدم مرسل البريد الإلكتروني؛ تم حظر anonymous_users.
view_raw_email_allowed_groups المجموعات التي يمكنها عرض محتوى البريد الإلكتروني الوارد الخام. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
uploaded_avatars_allowed_groups تحديد المجموعات المسموح لها برفع صور ملفات تعريف شخصية مخصصة. نعم لا لا بوابة المستخدم الحالي/الهدف؛ تم حظر anonymous_users.
create_topic_allowed_groups المجموعات المسموح لها بإنشاء مواضيع جديدة. نعم لا لا يتطلب مستخدمًا ويستخدم in_any_groups?؛ تم حظر anonymous_users.
topic_timers_allowed_groups المجموعات المسموح لها بتعيين مؤقتات للمواضيع. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
edit_wiki_post_allowed_groups المجموعات المسموح لها بتحرير المنشورات المميزة كويكي. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
edit_post_allowed_groups المجموعات المسموح لها بتحرير المنشورات. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
self_wiki_allowed_groups السماح للمستخدمين في هذه المجموعات بجعل منشوراتهم الخاصة ويكي. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
send_email_messages_allowed_groups المجموعات المسموح لها بإرسال رسائل شخصية عبر البريد الإلكتروني. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
flag_post_allowed_groups المجموعات المسموح لها بإبلاغ عن المنشورات. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
post_links_allowed_groups المجموعات المسموح لها بتضمين روابط في المنشورات. نعم لا لا يتطلب مستخدمًا مصادقًا؛ تم حظر anonymous_users.
embedded_media_post_allowed_groups يُسمح للمستخدمين في هذه المجموعات بتضمين عناصر وسائط في المنشور. نعم لا لا بوابة المستخدم الفاعل؛ تم حظر anonymous_users.
profile_background_allowed_groups المجموعات المسموح لها برفع خلفية لملف التعريف. نعم لا لا بوابة المستخدم؛ تم حظر anonymous_users.
user_card_background_allowed_groups المجموعات المسموح لها برفع خلفية لبطاقة المستخدم. نعم لا لا بوابة المستخدم؛ تم حظر anonymous_users.
invite_allowed_groups المجموعات المسموح لها بدعوة المستخدمين. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
ignore_allowed_groups المجموعات المسموح لها بتجاهل المستخدمين الآخرين. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
delete_all_posts_and_topics_allowed_groups المجموعات المسموح لها بحذف المنشورات والمواضيع التي أنشأها مستخدمون آخرون وعرض المحتوى المحذوف. نعم لا لا بوابة الحارس/المستخدم الحالي؛ تم حظر anonymous_users.
edit_all_topic_groups السماح للمستخدمين في هذه المجموعة بتحرير عناوين مواضيع المستخدمين الآخرين وعلاماتهم وفئاتهم. نعم لا لا تقسيم خام ثم in_any_groups?؛ تم حظر anonymous_users.
edit_all_post_groups السماح للمستخدمين في هذه المجموعة بتحرير منشورات المستخدمين الآخرين. نعم لا لا بوابة المستخدم عبر in_any_groups?؛ تم حظر anonymous_users.
change_post_ownership_allowed_groups السماح للمستخدمين في هذه المجموعات بتغيير ملكية المنشورات. نعم لا لا بوابة المستخدم الحالي؛ تم حظر anonymous_users.
cross_origin_opener_unsafe_none_groups مجموعات تجاوز COOP المخفية؛ يحصل المستخدمون المطابقون على Cross-Origin-Opener-Policy: unsafe-none. نعم لا لا يتطلب current_user.present?؛ لا يكون لاختيار المجهولين أي تأثير في وقت التشغيل.
user_api_key_allowed_groups عضوية المجموعة مطلوبة لتوليد مفاتيح واجهة برمجة تطبيقات المستخدم. نعم لا لا بوابة المستخدم الحالي؛ تم حظر anonymous_users.
create_tag_allowed_groups المجموعات المسموح لها بإنشاء علامات. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
edit_tags_allowed_groups المجموعات المسموح لها بتحرير العلامات ووصف العلامات ومرادفات العلامات. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
tag_topic_allowed_groups المجموعات المسموح لها بوضع علامات على المواضيع. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
pm_tags_allowed_for_groups السماح لأعضاء المجموعات المدرجة بوضع علامات على أي رسالة شخصية. نعم لا لا بوابة مستخدم الحارس؛ تم حظر anonymous_users.
lazy_load_categories_groups تحميل معلومات الفئة بشكل كسول فقط لمستخدمي هذه المجموعات. نعم نعم نعم فحص everyone صريح بالإضافة إلى in_any_groups? للحارس؛ anonymous_users له معنى.
chat_allowed_groups يمكن للمستخدمين في هذه المجموعات الدردشة، باستثناء المستخدمين المجهولين الذين يمكنهم فقط عرض الدردشة عند إضافتهم إلى هذا الإعداد. نعم نعم لا تستخدم الدردشة المسجلة in_any_groups?؛ تفحص الدردشة العامة المجهولة anonymous_users صراحةً.
direct_message_enabled_groups السماح للمستخدمين ضمن هذه المجموعات بإنشاء محادثات شخصية من مستخدم إلى مستخدم. نعم لا لا بوابة الحارس للدردشة المسجلة؛ لا يوجد مسار رسائل خاصة مجهول ذو معنى.
chat_pinning_messages_allowed_groups يُسمح للمستخدمين في هذه المجموعات بتثبيت رسائل الدردشة. نعم لا لا يتطلب وصول الدردشة/المستخدم الحالي؛ لا يوجد مسار تثبيت مجهول.
chat_message_flag_allowed_groups يُسمح للمستخدمين في هذه المجموعات بإبلاغ عن رسائل الدردشة. نعم لا لا بوابة المستخدم؛ تم حظر المسار المجهول بواسطة أذونات الدردشة المحيطة.
no_ads_for_groups عدم عرض الإعلانات للمستخدمين في هذه المجموعات. نعم لا لا تمت إضافته إلى مُسلسل current_user فقط؛ لا يوجد حمولة مستخدم حالي مجهول.
adsense_exclude_groups لن يتم عرض الإعلانات لأعضاء هذه المجموعات. نعم لا لا علامة إعلانات المستخدم الحالي عبر in_any_groups?؛ لا يوجد حمولة مستخدم حالي مجهول.
dfp_exclude_groups لن يتم عرض الإعلانات لأعضاء هذه المجموعات. نعم لا لا علامة إعلانات المستخدم الحالي عبر in_any_groups?.
amazon_exclude_groups لن يتم عرض الإعلانات لأعضاء هذه المجموعات. نعم لا لا علامة إعلانات المستخدم الحالي عبر in_any_groups?.
carbonads_exclude_groups لن يتم عرض الإعلانات لأعضاء هذه المجموعات. نعم لا لا علامة إعلانات المستخدم الحالي عبر in_any_groups?.
adbutler_exclude_groups لن يتم عرض الإعلانات لأعضاء هذه المجموعات. نعم لا لا علامة إعلانات المستخدم الحالي عبر in_any_groups?.
composer_ai_helper_allowed_groups سيرى المستخدمون في هذه المجموعات زر مساعد الذكاء الاصطناعي في محرر النصوص. نعم لا لا بوابة مساعد الذكاء الاصطناعي للمسجلين عبر in_any_groups?.
post_ai_helper_allowed_groups مجموعات المستخدمين المسموح لها بالوصول إلى ميزات مساعد الذكاء الاصطناعي في المنشورات. نعم لا لا بوابة مساعد الذكاء الاصطناعي للمسجلين عبر in_any_groups?.
ai_pm_summarization_allowed_groups المجموعات المسموح لها بإنشاء وعرض الملخصات في الرسائل الخاصة. لا لا لا يستخدم user.group_ids الخام، لذا لا تتطابق المجموعات الوهمية.
ai_bot_debugging_allowed_groups السماح لهذه المجموعات برؤية زر تصحيح الأخطاء الذي يعرض طلب واستجابة الذكاء الاصطناعي الخام. نعم لا لا يعيد false صراحةً للمجهولين، ثم يستخدم in_any_groups?.
ai_bot_allowed_groups عندما يكون لدى روبوت GPT وصول إلى الرسالة الخاصة، سيجيب على أعضاء هذه المجموعات. نعم لا لا تستخدم البوابات الأساسية in_any_groups?؛ يستخدم مسار الملعب واحد group_ids الخام.
ai_bot_public_sharing_allowed_groups السماح لهذه المجموعات بمشاركة الرسائل الشخصية للذكاء الاصطناعي مع الجمهور عبر رابط فريد. نعم لا لا يعيد false صراحةً للمجهولين، ثم يستخدم in_any_groups?.
assign_allowed_on_groups يُسمح للمستخدمين في هذه المجموعات بتعيين المواضيع. لا لا لا يستخدم user.group_ids الخام/GroupUser؛ المجموعات الوهمية ليس لها صفوف.
discourse_post_event_allowed_on_groups المجموعات المسموح لها بإنشاء الأحداث. لا لا لا groups.where(id: ...) الخام؛ everyone حالة خاصة، لكن logged_in_users ليس كذلك.
discourse_kanban_manage_board_allowed_groups المجموعات المسموح لها بإنشاء وتكوين لوحات كانبان. نعم لا لا يستخدم الحارس in_any_groups?، ولكن متحكمات الكتابة تتطلب تسجيل الدخول.
create_policy_allowed_groups عضوية المجموعة مطلوبة لإضافة سياسات إلى المنشورات. نعم لا لا بوابة المنشور/المستخدم عبر in_any_groups?.
flag_posts_voting_comments_allowed_groups المجموعات المسموح لها بإبلاغ عن تعليق تصويت المنشور. نعم لا لا بوابة المستخدم عبر in_any_groups?.
allow_solved_in_groups السماح بوضع علامة على الحلول في رسائل المجموعة لهذه المجموعات. لا يوجد بوابة مستخدم لا يوجد بوابة مستخدم لا يوجد بوابة مستخدم يطابق topic.allowed_groups للرسائل الخاصة، وليس عضوية المستخدم الحالي.
accept_all_solutions_allowed_groups المجموعات المسموح لها بقبول الحلول على أي موضوع. نعم لا لا بوابة مستخدم مصادق/حالي عبر in_any_groups?.
discourse_templates_groups_allowed_private_templates المجموعات المسموح لها باستخدام القوالب الخاصة. لا لا لا GroupUser.exists? الخام؛ فقط everyone حالة خاصة.
poll_create_allowed_groups المجموعات المسموح لها بإنشاء استطلاعات الرأي. نعم لا لا بوابة المستخدم الفاعل/الحالي عبر in_any_groups?.
styleguide_allowed_groups يحد من رؤية دليل الأنماط لأعضاء المجموعات المقدمة. نعم نعم نعم يتعامل المتحكم صراحةً مع anonymous_users؛ كما سمح بالمجهولين عبر everyone قبل التغيير.
إعجابَين (2)

افصل هذه التعديلات في طلب سحب (PR) جديد:

إعجابَين (2)

@moin تم دمج هذا الطلب السحب (PR) DEV: Add resolve_group_membership functionality to theme settings - Pull Request #41360 - discourse/discourse - GitHub الآن، وأقوم بإضافة الوثائق في DEV: Docs for theme setting resolve_group_membership - Pull Request #41537 - discourse/discourse - GitHub . لقد قمت بإصلاح discourse-copy-post عبر DEV: Use resolve_group_membership core theme functionality - Pull Request #37 - discourse/discourse-copy-post - GitHub والآن أنا أراجع الإضافات الرسمية الأخرى الخاصة بنا لمعرفة ما إذا كانت هناك أي إضافات أخرى تحتاج إلى نفس المعالجة (على سبيل المثال، لقد أشارت بالفعل إلى GitHub - discourse/discourse-unanswered-filter · GitHub )

بالنسبة لإضافتك الخاصة Filter Favorites ، يمكنك رؤية مثال copy-post الذي قمت به، ولكن بشكل أساسي تحتاج إلى إضافة resolve_group_membership: true إلى كل من default_favorite_filters_groups و custom_favorite_filters_allowed_groups ، ثم ستكون متاحة كقيم منطقية (booleans) بناءً على عضويات مجموعات المستخدم في settings باسم settings.user_in_default_favorite_filters_groups و settings.user_in_custom_favorite_filters_allowed_groups على التوالي، والآن لم تعد بحاجة إلى التحقق يدوياً من معرفات مجموعات المستخدم في الواجهة الأمامية.

سأقوم بتغيير القيمة الافتراضية لـ default_favorite_filters_groups إلى 4|5 في مكون السمة الخاص بك، وهو المستخدمون المسجلون والمستخدمون المجهولون، بدلاً من 0 (الجميع) والذي سيتم إزالته قريباً.

سأقوم بتدوين ملاحظة لتشغيل هجرة قاعدة بيانات على إعدادات السمة عندما أتخلص من مجموعة “الجميع”، أحتاج إلى القيام بذلك لإعدادات الموقع أيضاً، سيحدث هذا عندما ينتقل التغيير القادم إلى الوضع الدائم في الأسابيع القليلة القادمة (اعتماداً على ما إذا كانت هناك مشكلات أخرى تظهر ومدى سرعة إكمالي لإصلاح السمات/المكونات الأخرى التي تحتاج إلى إضافة resolve_group_membership).

لا، لا توجد طريقة للقيام بذلك في الوقت الحالي كما هو الحال مع إعدادات الموقع… لا أعتقد أنه من الضروري إضافته الآن، يمكنك فقط ذكر ذلك في وصف الإعداد والحماية بـ currentUser في الواجهة الأمامية على أي حال. ربما في المستقبل سأضيف هذا إذا كان هناك المزيد من الحاجة.

إعجابَين (2)

هل يعمل هذا أيضًا لنوع groups في إعدادات الكائن؟

لا، هل يحتاج إلى ذلك؟ لم أكن على علم بذلك، لا أعرف ما إذا كان يُستخدم للأذونات أم لا.

أعتقد أنه يُستخدم، على سبيل المثال، في Discourse Group Sidebar Menus حتى يتمكن المسؤولون من تكوين المجموعات التي يجب أن تكون قادرة على رؤية كل قسم من أقسام الشريط الجانبي، ويُستخدم في Notification Banners لتكوين رؤية كل لافتة.

افترضت أنك ستستخدمه أيضًا في مكوّن الإعلانات. ولكن يبدو أنه يعتمد على سلسلة من أسماء المجموعات بدلاً من ذلك.

أحاول تفضيل إعدادات نوع المجموعة، لأنها تساعد المسؤول على إدخال المجموعات بسهولة من خلال قائمة منسدلة، بينما تعتمد على معرفات المجموعات، والتي من غير المرجح أن تتغير مقارنة بالأسماء. وأعتقد أنه من المربك إذا كانت قائمة المجموعات في إعداد كائن وقائمة نوع الإعداد لا تعمل بنفس الطريقة.

بالنسبة لي، كتابة "everyone" سيؤدي أيضًا إلى "trust_level_0" لأن هذا لا يعمل للزوار يختلف عن النسخة الجديدة، حيث تقدم القائمة المنسدلة بشكل صريح "anonymous_users" - حتى لو قلت أنه لن يعمل. إذا كان قول ذلك في الوصف كافيًا، كنت قد فعلت نفس الشيء لإعدادات الموقع. بالنسبة للمسؤول الذي يستخدم كلا نوعي الإعدادات، سيكون من الصعب فهم السبب، في بعض الأماكن، المجموعات التي لن تعمل مخفية، وفي أماكن أخرى، لا تكون مخفية - ليس لأن منشئ المكوّن لم يهتم، ولكن لأنه ليس من الممكن بعد في ذلك المكان.

إعجابَين (2)