Перевод статьи «Приватные форумы в Drupal: Forum Access, Taxonomy Access или Taxonomy Access Control Lite?» Cедлаем форум!

Главные вкладки

Аватар пользователя Химический Али Химический Али 11 апреля 2008 в 16:04

Оригинал: «Private forums in Drupal: Forum Access vs. Taxonomy Access vs. Taxonomy Access Control Lite» by Angie Byron March 12, 2007

Введение

Большинство из тех, кто использует форумные движки, подобные vBulletin или phpBB, не понаслышке знают о множестве дополнительных возможностей, которых лишен стандартный форум Drupal, например, личных сообщений, смайлов или поддержки BBcode. Несмотря на то, что эти «проблемы» вполне решаемы путем подключения дополнительных модулей, есть две «обязательные» функции, реализация которых немного более сложна, поскольку касается контроля доступа. Это частные форумы, и форумы для модераторов.

При решение подобных вопросов ядро Drupal, как правило, придерживается принципа "все или ничего". Та или иная роль либо получает доступ ко всему содержанию на сайте, либо не получает его вовсе. Аналогичная ситуация складывается и с форумами: участник может администрировать либо все форумы, либо ни одного. К счастью, Drupal предоставляет возможность использовать ряд трюков, которые позволяют модулям более гибко управлять правами доступа.

В этой статье мы рассмотрим три модуля, расширяющие функциональность управления привилегиями на форуме, сравним и даже противопоставим их друг другу. Речь пойдет о модулях Forum Access, Taxonomy Access Control, and Taxonomy Access Control Lite.

Подготовим форум к экзекуции

Исходная позиция:

Имеем 4 роли: анонимы (незарегистрированные пользователи), пользователи (вошедшие в систему), модераторы (дело ясное), и администраторы (пользователи, администрирующие сайт в целом).

Кроме того, имеется три уровня форумов: административные форумы, в которых могут оставлять сообщения только носители ролей "администратора" или "модератора", пользовательские форумы, в которых могут писать авторизованные пользователи и которые могут читать гости (анонимы), а также гостевой форум, пользоваться которым может кто угодно.

В "модератора" роль, должен быть в состоянии управлять член или гость форумов, но только членов в "администратор" роль может умеренных административных форумах.
Выглядит это примерно так:
Forum access use case.

Немножко терминологии Drupal

Краткое введение в терминологию. в Drupal форумы состоят из трех объектов:

• Собственно форумы, создаваемые на основе таксономии в виде словаря
Темы форума в виде нод (материалов)
Ответы к темам, представляющие собой комментарии.

Поэтому, когда мы говорим о том, что модули могут обеспечить разграничение прав доступа к форумам, мы имеем в виду модули, которые могут ограничить доступ к темам форума, и ответам в них, размещенных в форуме, где была размещена тема. С технической точки зрения мы говорим о модулях доступа к нодам, которые используют таксономию, с тем, чтобы определить, кто имеет доступ к ним и какой это доступ.
Не пугайтесь, ниже все будет разъяснено. Wink

Модуль Forum Access

Forum Access - это модуль, специально предназначенный для решения этой проблемы. Он требует для нормальной работы установки модуля ACL (Access Control List). Модуль ACL создает три таблицы (acl, acl_node, acl_user), Forum Access одну (forum_access).
Изменяйте настройки Forum Access, нажимая кнопку «редактировать форум» / «изменить контейнер» на странице Администрирование>> Содержание >> Форум(ы) (admin/content/forum).

Для контейнеров вы можете указать, какие роли имеют разрешение на просмотр форума (контейнера) и всех подфорумов, а также список пользователей, которые могут выступать в качестве модераторов:
Forum Access on containers.
Для форумов можно указать, какие роли имеют право просматривать, размещать, редактировать и удалять сообщения, а также пользователей, которые могут выступать в качестве модераторов. Вам необходимо настроить права как для контейнера, так и для всех вложенных форумов, иначе ваши пользователи получат сообщение об отказе в доступе, когда попытаются войти на форум (нажмите для увеличения):
Forum Access on forums.
Кроме того, модуль Forum Access ограничивает список форумов доступных для размещения тем пользователем:
Forum Access while posting.
Плюсы: Forum Access - простой в использовании модуль, делающий именно то, что ему указывают. Используемая модулем терминология соответствует привычной, позволяя людям осуществить простой переход с других форумов. Он поддерживает модерирование по роли (давая той или иной роли право управлять форумом), а также по имени пользователя.

Минусы: Настройка разрешений может оказаться рутинной, если число форумов на вашем сайте велико, т.к. глобальные настройки не предусмотрены и разрешения, установленные на уровне контейнера, не распространяются на подфорумы. Forum Access не поддерживает контроль доступа на основе таксономии. Поэтому, если вам потребуется разграничить доступ по ней, вам лучше подойдет модуль Taxonomy Access.

Модуль Taxonomy Access

Taxonomy Access Control (TAC) обеспечивает чрезвычайно гибкое разграничение прав на основе любого словаря терминов, в том числе и для форума. Существуют версии как для ветки, 4.7.x так и для 5.x. На момент написания статьи, официальных релизов TAC не было. Он создает две таблицы в БД: term_access и term_access_defaults. Он также включает в себя средства удаления своих данных, так что вы сможете без проблем избавить от него после экспериментов.

Настройка производится в разделе Администрирование >> Пользователи >> Taxonomy Access Control (admin/user/taxonomy_access). Каждая роль имеет свою собственную страницу настройки с раздельными настройками для разных словарей таксономии.
Именно на этих страницах осуществляется основная настройка. В сущности, вы описываете условия, в которых та или иная роль имеет право Просматривать (View) темы форума, Редактировать их и Удалять, Создавать новые темы форума, или обозревать Список контейнеров и форумов на главной странице форума.

Вот так выглядит страница настройки прав для роли «Анонимы» (нажать для увеличения):
Taxonomy Access permissions
Т.к. права, назначаемые Taxonomy Access, наследуются, доступ к подфорумам будет ограничен, если ограничен доступ к их контейнеру:
Taxonomy Access posting
Плюсы: Очень мощный: гибкая система прав и применяемость к любому словарю в системе дает возможность настройки различных прав для форумов, новостей и других материалов. Позволяет групповое изменение разрешений, в отличие от модуля Forum Access, требующего раздельной настройки каждого форума.

Минусы: Пользовательский интерфейс достаточно сложный для тех, кто просто хочет поддерживать частные форумы. В отличие от Forum Access, контейнеры отображаются в списке форумов после создания новой темы. Нельзя назначить модераторов по имени пользователя, а только по роли.

Модуль Taxonomy Access Lite

Taxonomy Access Control Lite (TAC Lite) был написан в ответ на «тяжелый» характер модуля Taxonomy Access Control и имеет целью упростить задачу ограничения доступа к материалам по таксономии. На момент написания официальных релизов TAC Lite не было, хотя версии для 5.x и 4.7.x доступны. Оправдывая свое название, модуль не создает таблиц в БД, а вместо этого использует имеющиеся в Drupal данные для контроля доступа.

Интерфейс модуля найти немного сложно: она скрыт по пути под Администрирование >> Пользователи >> Контроль доступа (Права) >> Контроль доступа к таксономии (Administer >> User management >> Access control >> Access control by taxonomy). Во-первых, следует выбрать словарь (словари), для которых вы хотите установить контроль доступа. Затем перейдите на вкладку "Role-based privileges" (Права по роли) для просмотра списков форумов, доступных той или иной роли:
TAC Lite permissions
Подобно TAC, права для подфорумов наследуются, поэтому при добавлении темы форум должен быть доступен для данной роли.

Одним из главных преимуществ TAC Lite на фоне двух других модулей является возможность установить ограничения по пользователю, а не роли. Каждый пользователь будет получит вкладку "tac_lite" в своем профиле (например, user/1/edit/tac_lite).
TAC Lite имеет недостаток, отрицательно влияющий на его прелести: он позволяет управлять лишь правом на просмотр, оставляя без контроля правку/удаление и другие. Поэтому, давая возможность создавать закрытые форумы, он не дает назначить модераторов. Кроме того, он не позволяет анонимам просматривать пользовательский форумы, давая возможность отвечать в них, сохраняя возможность отвечать в гостевых форумах.

Плюсы: Очень простой интерфейс. Позволяет раздавать права как по пользователю, так и по роли. Позволяет указать на каких словарях основывать права. Может работать, для использования не только для форумов.

Минусы: Может ограничивать только право на просмотр; не может быть использован в качестве инструмента назначения модераторов. При добавлении темы показывает подфорумы в списке выбора целевого форума.

Итоги

Так кто же одерживает победу?

Т.к. модуль Forum Access был создан специально для решения обсуждаемой проблемы, он является наиболее простым и интуитивным инструментом для управления правами на форуме. Однако указание этих прав было довольно утомительным. Кроме того, он предназначен лишь для управления разрешениями на форуме и не повлияет на работу других словарей.

Taxonomy Access Control дает вам огромную власть над всеми аспектами разрешений, основанных на таксономии. Вы сможете контролировать все от просмотра сообщений до отображения форума в списке форумов. Эта власть дается нелегкой ценой, жертвуя практичностью, однако большинству людей, управлявших такими форумами как PHPBB, потребуется дополнительная помощь. А множество возможных комбинаций разрешений означает массу возможностей сделать ошибки.

Taxonomy Access Control Lite нельзя назвать правильным инструментом для решения нашей конкретной проблемы, так как он ограничивает лишь просмотр тем. Однако в случае, вам требуется лишь частный форум, этот модуль может быть полезным инструментом. Изменение разрешений производится быстро и легко, вы сможете создать исключения для отдельных пользователей, что не является характерной чертой для двух других модулей.

Рекомендации: используйте Forum Access если ограничения требуется установить лишь для форумов. Используйте Taxonomy Access Control Lite, если у Вас есть простые потребности, но хотят иметь возможность контролировать больше, чем просто словари форумах. И использования таксономии контроля доступа, если вы нуждаетесь в конечном итоге власть и гибкость по сравнению с содержанием

Комментарии

Аватар пользователя Wave Wave 11 апреля 2008 в 22:16

Спасибо за работу, но перевод, такое впечатление, что машинный.

В "модератора" роль, должен быть в состоянии управлять член или гость форумов, но только членов в "администратор" роль может умеренных административных форумах. - вырубило напрочь. Несколько минут пытался, но так и не смог понять, что имеется в виду.

Интерфейс модуля найти немного сложно: она скрыт по пути

Кроме того, он не позволяет анонимам просматривать пользовательский форумы, давая возможность отвечать в них, сохраняя возможность отвечать в гостевых форумах.

если у Вас есть простые потребности, но хотят иметь возможность контролировать больше, чем просто словари форумах. И использования таксономии контроля доступа, если вы нуждаетесь в конечном итоге власть и гибкость по сравнению с содержанием

Аватар пользователя apple_rom apple_rom 14 апреля 2008 в 0:00

Просьба не счесть за рекламу, а как раз в качестве предупреждения новичкам (в т.ч. по теме обсуждаемых "приватных форумов"):
http://drupal.ru/node/7296
В своё время я неоднократно наступил на все перечисленные в статье грабли и с высоты уже прошедшего времени лишь больше убедился в правильности выбранного решения - отказаться от приватных форумов (как минимум - с помощью вышеописанных модулей). Правда с поправкой на:
- у вас уже имеется форум (т.е. его нужно перенести на друпал)
- присутствует не "просто форум", а уже с некоторым достаточным объёмом
- вы планируете или уже активно используете таксономию (и её объём тоже не "условный" - т.е. количество словарей/терминов)

п.с. "Приватные" форумы (точней - ветки, но обычно их вполне хватает) можно делать стандартными средствами - просто создав тему и убрав флажок "Опубликовать". Для удобности такого подхода можно добавить небольшой патчик, чтобы посты, создаваемые в такой теме тоже автоматически становились неопубликованными и добавить выборку-отображение всех новых неопубликованных комментариев для удобности просмотра свежих комментариев в таких скрытых темах (ведь новые посты не будут видны в трэкере, т.к. он отображает лишь опубликованные). В результате никаких тормозов и всё максимально "безопасно" и портабельно.

Аватар пользователя tdg tdg 20 апреля 2008 в 14:52

Спасибо за обзор! Какраз занимаюсь данной проблемой Smile
Подскажите, есть ли способ установить следующие права:

1. Две группы пользователей - все сообщения первой должны пройти премодерацию (это вроде сделал с помошью modr8)
2. Вторая группа имеет право постить без премодерации и редактировать свои сообщения.
3. НО, они не должны иметь возможности переместить свое сообщение в другую тему
4. Они НЕ должны иметь возможности удалить свое сообщение.

Пытаюсь сделать это на пятом друпале. Forum acess такого не позволяет.
Пока пиходит на ум только решение с правкой модулей, чего не хотелось бы Sad

Аватар пользователя babuta babuta 26 августа 2009 в 7:40

Устанавливал Taxonomy Access Control на своем форуме, продержался он у меня пару месяцев. Пришлось от него отказаться, т.к. он создавал какую то непонятную дыру в безопасности, которую невозможно закрыть другими модулями.
И ошибки в интерфейсе при создании тем форума (advanced forum).
tac_lite в моей ситуации оказался более приемлимым.
Отдаю голос Taxonomy Access Control Lite

Аватар пользователя SkyD SkyD 8 марта 2010 в 23:22

Большое спасибо, даже перевод такой статьи - крайне доброе дело.

Хотел бы уточнить:
возможно автор или комментаторы в курсе того, как обстоят дела на этом фронте сейчас, спустя два года?

Закрыли ли дыру от Taxonomy Access Control и не появилось ли чего-то нового?

И кстати, всё полностью ли вышеописанное применимо к обычным нодам (материалам) на сайте? (т.е. когда у меня нет форума, но доступ ограничивать надо)

Аватар пользователя Funtik44 Funtik44 22 июля 2011 в 11:26

Подскажите, при помощи какого модуля я могу скрыть некоторые форумы с главной страницы форума (не сайта а форума)? Хочу сделать так, чтобы эти скрытые форумы были видны только после того, как провалишься в родительский!