В админке OctoberCMS по умолчанию выводятся все элементы таблицы. Научимся расширять запрос списка контроллера по правам доступа.
К примеру у нас есть две роли администраторов: Авторы и Модераторы. Авторам нужно дать возможность просматривать только свои материалы в админке OctoberCMS.
По умолчанию там выведутся все материалы, то есть то что нам нужно показать Модераторам.
В своем контроллере нам нужно добавить функцию listExtendQuery, которая будет расширять запрос при выводе списка элементов. К примеру:
public function listExtendQuery($query, $definition)
{
// получаем группы пользователя
$role_id = $this->user->role->id;
// получаем id текущего пользователя
$user_id = $this->user->id;
// показываем материалы только этого автора, если его роль - Автор
if($role_id == 2) {
// Самое главное что тут нужно :)
$query->whereIn('author_id', $user_id);
}
}
Таким образом $query можем расширять как угодно.
Если у пользователя есть право доступа просматривать список этого контроллера, то и форму добавления он также может видеть. Добавим проверку на id автора при редактировании. В своем контроллере пишете:
use Site21\Posts\Model\Post;
==
public function update($recordId, $context = null)
{
// проверка редактируемой записи: если запись от текущего автора, то редактировать он ее может
$record = Post::find($recordId);
if($record->author_id != $this->user->id) {
// выводим ошибку
return \Response::make(\View::make('backend::access_denied'), 403);
}
// Обычный вывод формы если все ОК
return $this->asExtension('FormController')->update($recordId, $context);
}
Таким образом если администратор не является автором материала, то при переходе на страницу ее редактирования, он получит ошику "Access Denied."
Это основные моменты которые могут понадобиться при настройке прав доступа в админке OctoberCMS.
Вам может понадобиться просто проверка на права доступа. Для этого в своем плагине создаем эту настройку, далее импользуем проверку на роль у пользователя:
if($this->user->hasPermission(['site21.posts.manage_posts'])) {
// если право доступа у пользователя имеется
}
Опубликовано 21 мая 2021 г. в категориях: October CMS Winter CMS
Если Вам необходимо внедрить данную разработку на свой проект, свяжитесь со мной, обсудим цену и срок.