Используется стандартный RBAC
Есть таблица ролей, пермишенов. Пермишены могут быть вложенные(древовидные)
Вводные данные
Стандартный компонент с отображением, редактированием.
Нужно добавить новый пермишен, для определенной роли с возможностью редактировать только 2 поля из более чем 40-ка (manufacturer_order__edit_2_fields)
вот условно дерево пермишенов:
$permissions = [
'manufacturer_order',
'manufacturer_order__view',
'manufacturer_order__edit',
'manufacturer_order__edit_2_fields',
];
Насколько я знаю, основное правило организации доступа - все запрещено, то что не разрешено.
Поэтому в данные момент существуют проверки на доступ к странице и редактированию по пермишенам view и edit.
Проблема
Условно сейчас для проверки редактирования и отображения полей нужно делать делать проверку для каждого из 40 полей $user->can('manufacturer_order__edit') а для этих двух полей $user->can('manufacturer_order__edit_2_fields')
Тоесть если до этого в коде практически не было проверок, теперь их станет 42 штуки притом их надо сделать как на клиенте(для отображение) так и на сервере для проверки данных
Если в дальнейшем добавятся еще пользователи, которые могут редактировать другие поля - придется добавлять еще проверки и код превратится в
$user->can('manufacturer_order__edit') && $user->can('manufacturer_order__edit_2_fields') && $user->can('manufacturer_order__edit_5_fields') && $user->can('manufacturer_order__edit_order_fields')
Мне кажется я что-то делаю не так...
Если есть, буду рад ссылкам на статьи или видео с качественным материалом по теме.
UPDATE
это не YII и вопрос не о том как сделать, а как правильно организовать структуру.
Как избежать в отображении десятки проверок, т.к. дополнение и поддержка такого кода будет не приятной, при появлении новых пермишенов