Я создал небольшой плагин для October CMS с помощью Rainlab.Builder.
Он состоит из 2х моделей/контроллеров/таблиц в БД.
Branches - Филиалы.
таблица плагина:
elisseiidev_branchmanagement_branchesGroups - Группы пользователей (менеджеров).
Стандартная таблица October CMS:
backend_user_groups
При этом я использую ещё одну дополнительную таблицу для того что бы по ID связать записи в Branches с записями в Groups. Модель Groups берёт данные из стандартной October CMS таблички backend_user_groups
Объясню подробнее.
В RainLab.Builder сделал следующее:
1) Создал новое поле в модели Branches, Type: "Relations", Field name: groups
2) Создал таблицу в базе данных: elisseiidev_branchmanagement_branches_groups
3) Добавил в код модели Branches следующее:
public $belongsToMany =[
'groups' =>[
'Elisseiidev\BranchManagement\Models\Groups',
'table' => 'elisseiidev_branchmanagement_branches_groups',
'order' => 'name'
]
];
Сейчас в табличку записываются group_id и branch_id и таким образом они связываются. Это позволяет при создании новой записи в модели Branches указывать к какой группе пользователей относится данная запись (Branch).
Теперь Вопрос:
В Backend плагина мне необходимо скрыть все записи кроме тех, которые доступны текущему менеджеру.
Нужно использовать следующую логику:
Если code/slug роли текущего пользователя = 'manager', а так же пользователю присвоена хоть одна группа, то... Создаём переменную $userGroups и записываем в неё code/slug группы или нескольких групп, к которым относится текущий пользователь. Далее скрываем все записи, кроме тех, которые прикреплены к группе, название которой совпадает с названием группы текущего пользователя.
Надеюсь понятно это всё объяснил.
Подозреваю что нужно как то расширить контроллер, но не знаю как именно.
Как выводить записи с проверкой наличия какого либо value в колонке я понимаю)
А вот как выводить с проверкой зависимостей? Что то я уже в конец запутался))
Вот видел
что-то похожее но не понял до сих пор как оно должно работать.
Заранее спасибо за ваше время.