Как создать тему, доступную только администраторам?

Как создать тему, доступную не только администраторам?

Не уверен, что понимаю, что вы имеете в виду. Не могли бы вы рассказать немного подробнее?

В моём форуме возникает много проблем. Я уже писал об этом на мета-форуме. Поскольку в Discourse нет возможности отключить опасные функции модераторов, я применил временное решение через CSS, чтобы скрыть опции, которые могут навредить моему форуму и к которым у них есть доступ. Однако после применения CSS-правки у меня самого исчезли такие возможности, как просмотр IP-адресов, блокировка пользователей, удаление всех сообщений и т. д. Я убрал эти изменения из всех тем, но хотел бы оставить одну тему без CSS-правок, чтобы видеть эти опции, при этом использовать эту тему мог бы только я.

Не понимаю, зачем вы используете CSS и темы для управления модераторами, но так делать не следует. Используйте уровни доверия для назначения модераторов категорий и выбирайте модераторов более тщательно. Скорее всего, вы создаёте себе дополнительные проблемы, пытаясь ограничить функции модераторов через CSS и темы.

Я решил все свои проблемы, изменив роли модераторов через CSS. Это очень сложная ситуация, и единственным реальным решением стало именно это. Я уже пробовал модерацию по категориям, но для моего форума это не подходило — это не отвечало потребностям. Единственным способом решить мои проблемы стала модификация через CSS. Поскольку Discourse предоставляет администраторам те же опции модерации, что и модераторам, это было единственным решением. Но теперь мне нужен способ использовать тему без CSS-модификаций, чтобы мне не приходилось отключать их каждый раз при её использовании.

Я расскажу вам немного о том, что произошло: я живу в Бразилии, где насчитывается 214,3 миллиона жителей, большинство из которых безработные и не имеют покупательной способности. Многие люди используют интернет как средство развлечения, поэтому мой форум вписывается в эту нишу. Однако существование моего форума сильно угрожает другому форуму, который уже неоднократно совершал на него атаки, подкупил многих моих модераторов. Бесчисленное количество модераторов удаляло пользователей, стирали сообщения, передавали IP-адреса другим лицам, фактически уничтожив мой проект. Я уже несколько месяцев обхожусь без модераторов, но вести форум без них крайне сложно. Я хочу снова нанять модераторов, но даже тщательный отбор не помогает. Не знаю, как обстоят дела в культуре стран Северной Европы, но в бразильской форумной среде люди часто относятся к своим обязанностям несерьёзно и легко поддаются коррупции. В конечном счёте деньги оказываются важнее, и они используют свои права для разрушения моего форума. Единственное решение, которое у меня есть, — лишить модераторов тех же прав, что и у администраторов. И это сработало: я реализовал это через CSS.

Я уже создавал тему об этом, которая вызвала большие споры, ни к чему не приведшие. Многие советовали мне лучше подбирать модераторов, чтобы иметь чёткие критерии и выбирать более надёжных людей. Однако это не применимо к форумам, на которых я состою. Единственным решением было ограничить полномочия модераторов (доступ к IP, баны, удаление всех сообщений, проверка электронной почты и т. д.), но это затронуло и меня самого.

Привет :wave:

Вы можете использовать Безопасный режим (точно так же, как ваши модераторы), чтобы отключить темы.

С помощью пользовательских разделов вы можете создать быструю ссылку на /safe-mode.

  1. Создайте пользовательский раздел в боковой панели следующим образом.


    Это должно выглядеть так. (Добавьте заголовок, имя и ссылку /safe-mode). Обязательно снимите флажок Сделать этот раздел публичным и видимым для всех.

  2. Он появится в меню навигации (боковая панель) как пользовательский раздел.

  3. Здесь вы можете отключить темы и компоненты тем. Нажмите кнопку «Войти в безопасный режим».

Может, стоит посмотреть на модераторов категорий?

Если злоумышленник обнаружит безопасный режим, ваши меры противодействия через CSS окажутся неэффективными.

Единственный способ обеспечить безопасность Discourse — это тщательное назначение прав через бэкенд.

Это означает, что вам понадобится пользовательский плагин, который внесёт эти изменения. Если у вас нет бюджета (возможно, от 1000 до 5000 долларов), попробуйте использовать модераторов категорий или уровень tl4.

О них уже говорили здесь: :slight_smile:

Я думаю, что можно сделать так, чтобы компонент темы скрывал этот контент от всех, кроме администраторов.

Однако безопасный режим всё равно будет лёгким способом обойти это ограничение. Возможно, быстрый и простой плагин сможет отключить эти функции, не требуя столько времени, как я изначально предполагал.

Я согласен практически со всем, что здесь было сказано.

Если вы действительно хотите использовать 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;
    }
}

В моём примере розовый фон будет применён ко всем, кроме администраторов.

Discourse автоматически добавляет классы, основанные на группах, к тегу , поэтому, вероятно, можно обойтись без 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, что также можно применить в случае даниэлы. :slight_smile:

Ахххх, вот в чём была путаница — я просто искал на Meta :man_facepalming: Спасибо, @Canapin

Я тебя очень люблю!

Спасибо, что показал мне это. Я не мог решить эту проблему уже больше года.