كيفية إنشاء سمة يمكن للمسؤولين فقط استخدامها؟

كيفية إنشاء سمة لا يمكن للمسؤولين فقط استخدامها؟

لست متأكدًا مما تعنيه. هل يمكنك تقديم المزيد من التفاصيل؟

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

تحدث الكثير من المشاكل في منتداي، وقد علقت بالفعل هنا في ميتا بشأن ذلك، وبما أنني لم أتمكن من تعطيل الوظائف الخطيرة للمشرفين، لأن ديسكورس لا يمتلك هذا الخيار، فقد قمت بحل مؤقت عبر CSS، لإزالة الخيارات الخطيرة لمنتداي التي يمكنهم الوصول إليها، عندما قمت بذلك عبر CSS، تم أخذها مني أيضًا، خيارات مثل رؤية عنوان IP، الحظر، حذف جميع المشاركات وما إلى ذلك… لقد أزلتها من جميع السمات، أود ترك سمة واحدة فقط بدون CSS حتى أتمكن من رؤية الخيارات، ولكن يمكنني فقط استخدام هذه السمة

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

لا أعرف لماذا تستخدم CSS والسمات لإدارة المشرفين لديك، ولكن هذه ليست الطريقة الصحيحة للقيام بذلك. استخدم مستويات الثقة لإنشاء مشرفي فئات واختر مشرفيك بعناية أكبر. من المحتمل أنك تخلق المزيد من المشاكل لنفسك بمحاولة تقييد وظائف المشرف عبر CSS والسمات.

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

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

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

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

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

مرحباً :wave:
يمكنك استخدام الوضع الآمن (تمامًا مثل المشرفين لديك) لتعطيل السمات.
باستخدام الأقسام المخصصة، يمكنك إنشاء مسار سريع إلى /safe-mode

  1. قم بإنشاء قسم مخصص لشريطك الجانبي بهذا الشكل.


    يجب أن يبدو هذا هكذا. (أضف عنوانًا، اسمًا ورابطًا /safe-mode) تأكد من عدم تحديد مربع الاختيار اجعل هذا القسم عامًا ومرئيًا للجميع.

  2. سيتم وضعه في قسم مخصص في قائمة التنقل (الشريط الجانبي).

  3. هنا يمكنك تعطيل السمات ومكونات السمات. انقر فوق الزر “الدخول إلى الوضع الآمن”.

4 إعجابات

ربما تحقق من مشرفي الفئات؟

إعجابَين (2)

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

4 إعجابات

هذا يعني أنك ستحتاج إلى إضافة مخصصة تقوم بإجراء تلك التغييرات. ما لم يكن لديك ميزانية (ربما 1000 دولار إلى 5000 دولار؟)، ستحتاج إلى تجربة مشرفي الفئات أو tl4.

إعجابَين (2)

لقد تحدثوا عن ذلك بالفعل هنا: :slight_smile:

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

أعتقد أنه يجب أن يكون من الممكن جعل مكون السمة يخفي الأشياء للجميع باستثناء المسؤولين.

لكن الوضع الآمن سيظل تجاوزًا سهلاً. ربما يمكن لمكون إضافي سريع وغير مصقول تعطيل هذه الميزات دون استهلاك الوقت الذي قدرته في الأصل.

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

أتفق مع كل ما قاله الجميع هنا تقريبًا.

إذا كنت تريد حقًا اتباع طريقة CSS، فإليك كيفية جعل تعديلات CSS الخاصة بك تنطبق فقط على غير المسؤولين:

في علامة التبويب Head في السمة الخاصة بك، اكتب هذا:

    <script type="text/discourse-plugin" version="1.4.0">
    let currentUser = api.getCurrentUser();
    if (currentUser.admin == true) {
         document.querySelector("body").classList.add("is-admin");
    }
    </script> 

قم بتغليف جميع قواعد CSS الخاصة بك بـ body:not(.is-admin) { (CSS الخاص بك) } مثل:

body:not(.is-admin) {
    #main {
        background: pink;
    }
}

في مثالي، سيتم تطبيق الخلفية الوردية على الجميع باستثناء المستخدمين المسؤولين.

3 إعجابات

يضيف Discourse تلقائيًا فئات مستندة إلى المجموعة إلى <body> لذلك يجب أن يكون من الممكن تخطي JS والقيام بشيء مثل

body:not(.group-admins) #main { background: pink; }

ليس لدي فئة أخرى خاصة بالمجموعة بخلاف staff كمسؤول في نسختي التجريبية (آخر إصدار من Discourse):

<body> class="chat-enabled staff has-sidebar-page navigation-topics docked"

على حد علمي، لا في <html> ولا في أي علامة أخرى.

في meta، نستخدم CSS Classes for Current User's Groups والتي يمكن استخدامها أيضًا في حالة daniela. :slight_smile:

إعجابَين (2)

آآآآآ هذا ما أربكني - كنت أبحث فقط في ميتا :man_facepalming: شكرًا @Canapin

3 إعجابات

أنا أحبك كثيراً
شكراً لك على إظهار هذا لي، لم أتمكن من حل هذه المشكلة لأكثر من عام

إعجابَين (2)