Ограничения доступа.

Просмотры 17
Дата янв 29, 2016 (8 лет, 2 месяца, 9 часов назад)
#1
Добрый день Антон.
Хочется немного уточнить и по корпоративному сайту, и по форуму.
Я так понимаю, что функция везде одна.
Ограничения доступа.
Пользователям назначаются роли и разрешения, которые ограничивают их от редактирования содержимого при недостатке прав доступа.
Получается ограничение можно создать только – если это доска, то на подачу объявлений, если корпоративный портал, то (допустим на статьи и темы) и практически так же на форуме.
Собственно, вопрос?
Есть возможность закрыть не саму тему, а просто тег - [spoiler][/spoiler]
Это касаемо форума и корпоративного сайта.
Было бы отлично!!!
Дата янв 30, 2016 (8 лет, 1 месяц, 4 недели, 1 день, 20 часов назад)
#2
Пользователям назначаются роли и разрешения, которые ограничивают их от редактирования содержимого при недостатке прав доступа.
Получается ограничение можно создать только – если это доска, то на подачу объявлений, если корпоративный портал, то (допустим на статьи и темы) и практически так же на форуме.
Ограничение можно создать на что угодно, только при проверке разрешений нужно указывать на что оно действует, чтобы не путаться и чтобы его можно было легче найти.
Например создание разрешения для тега спойлер - [spoiler][/spoiler]:

Нужно сначала создать запись в БД в таблице `vesthelm_realms` (замените префикс `vesthelm_` на префикс в вашей базе данных), используя phpmyadmin.

INSERT INTO `vesthelm_realms` (`id`, `file`, `action`, `params`, `title`, `enhancement`, `custom_fields`, `side`) VALUES
(NULL, 'view-thread', 'allow-spoiler', '', 'view_thread_allow_spoiler', 'forum', '0', 'frontend');
После этого `Админка->Пользователи->Разрешения` найдите `view_thread_allow_spoiler` и выберите роли, которым будут показаны теги спойлер.

`{сайт}\applications\forum\frontend\controllers\View_Thread.php`

перед
$this->View->assign('posts', /* $this->Sanitization->specchars( */ $posts/* ) */);

добавьте
//view-thread - file, allow-spoiler - action, forum - enhancement
if(!$this->users->User->checkPermissions('view-thread', 'allow-spoiler', 'forum')){
$spoiler_pattern = '#\<div class="spoiler-bbcode">(.*?)\</div>#uis';
$spoiler_replace = '<div class="spoiler-bbcode">У вас нет разрешения на просмотр</div>';

//posts
if ($posts) {
foreach ($posts as $pkey => $p) {
$posts[$pkey]['post'] = preg_replace($spoiler_pattern, $spoiler_replace, $p['post']);
}
}

//thread
$thread['description'] = preg_replace($spoiler_pattern, $spoiler_replace, $thread_description);
$thread_description = preg_replace($spoiler_pattern, $spoiler_replace, $thread_description);
}

После сделанных изменений содержимое спойлера для ролей без доступа: `У вас нет разрешения на просмотр` - фраза в коде.
Дата янв 30, 2016 (8 лет, 1 месяц, 4 недели, 1 день, 18 часов назад)
#3
Спасибо Антон, всё работает отлично.

^
Запустить задачи