Форум IP.Board

Глобальные права доступа

При проектировании IP.Board 3, глобальная поисковая система была одной из первых существенных возможностей, которую мы собрались сделать. Мы уже рассказали вам о глобальном поиске и теперь настало время рассказать вам о системе прав доступа, которая позволила создать глобальный поиск и другие возможности в новом Invision Power Board.

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

В IP.Board 3 на смену старой системе приходит новая, глобальная система прав доступа, которая может быть использована любым приложением, в том числе и модификациями. Вместо того, чтобы поддерживать различные права доступа в разных местах и таблицах, все права теперь хранятся в одной индексной таблице. Таблица имеет достаточно характерную структуру для данного типа данных и потому может быть легко использована любым приложением. В свою очередь каждое приложение должно будет включать простейший конфигурационный класс, который будет указывать IPB каким образом использовать индекс прав доступа для конкретного приложения. Система прав доступа на данный момент поддерживает одно встроенное право на просмотр контента и 6 настраиваемых прав, которые как раз и изменяются в конфигурационном классе приложения. Единственное встроенное право на просмотр введено для нашей глобальной поисковой системы, которая использует его для проверки доступа к контенту во время глобального поиска или во время работы любой другой возможности, которая использует поисковый индекс.

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

private $mapping = array(
		'view' => 'perm_view',
		'read' => 'perm_2',
		'reply'=> 'perm_3',
		'start'=> 'perm_4',
		'upload' => 'perm_5',
		'download' => 'perm_6'
	);

private $perm_names = array(
		'view' => 'Просмотр форума',
		'read' => 'Чтение тем',
		'reply'=> 'Ответ в темы',
		'start'=> 'Создание тем',
		'upload' => 'Загрузка',
		'download' => 'Скачивание',
	);

Все что вам нужно, это изменить эти значения согласно требованиям вашего приложения и IP.Board будет знать каким образом обрабатывать права в вашем приложении. Теперь, чтобы проверить право чтения, вы просто должны сделать так:

$this->registry->class_permissions->check( 'reply', $perm_row );

Чтобы вывести редактор права доступа в АЦ, вам необходимо сделать так:

$permissions->adminPermMatrix( 'тип_права_доступа', $perm_row);

Данный код позволит сформировать HTML для вывода матрицы прав доступа, а для сохранения значений матрицы, необходимо выполнить следующий код:

$permissions->savePermMatrix( $this->request['perms'], $perm_type_id, 'тип_права_доступа' );

В данном примере, при редактировании прав для форума значение переменной perm_type_id будет содержать id редактируемого форума.

Мы надеемся, что эта система значительно облегчит разработку модификаций, избавляя авторов модификаций от изобретения собственных систем контроля прав доступа. И конечно же чуть позже мы предоставим всю документацию и примеры для работы с данной системой.В то время как разработчики получат множество выгод от использования новой системы, для конечного пользователя данная система позволит осуществить управление всеми правами доступа с одной страницы. Теперь, когда вы изменяете или добавляете новую группу прав, вы сразу будете видеть права для Форумов, Галереи, Менеджера загрузок и всех других модификаций, которые используют новую систему. Это избавит вас от необходимости тратить время на брожение по все системе, в случае необходимости изменить всего лишь одну группу правил.

Новая система прав доступа это очень важный шаг к одной из наших главных целей — наиболее глубокой интеграции всех приложений. В наших будущих записях вы узнаете еще больше о новых интеграционных возможностях, которые приподнесет вам IP.Board 3!

Back to top button