У меня есть приложение, в котором есть роли администратора, менеджера и сотрудника.Менеджер может редактировать поля A, B, C всех сотрудников.Администратор может редактировать поля A, B, D, E всех пользователей.
Вопрос: Как фильтровать параметры по роли пользователя?
Соображения:
- Я не хочу фильтровать параметры внутри контроллера с помощью предложения
if/else
, потому что оно кажется таким грязным. - Существует возможность расширения
FormRequest
класс, но это хакерский подход.Код оказывается не очень читабельным, поскольку FormRequest
никогда не предназначен для манипулирования запросами. - Я могу разделить эту логику на частный метод внутри контроллера.Это работает, но все еще есть толстый контроллер.
- Я могу разделить маршруты и контроллеры для администратора, менеджера и пользователя.Код выглядит намного проще за счет более сложной структуры.
Какое у вас мнение по этому поводу?Любые другие предложения?
Большое спасибо!
Редактировать: -------------
Просто разъяснение, поскольку многиезапутался в том, что я спрашиваю:
Я уже делаю авторизацию с Policy
и Gate
.Я спрашиваю об этом конкретном случае, когда вы хотите обновить пользователя.Менеджер может обновить некоторые определенные поля (A, B, C), в то время как администратор может обновить другие поля (A, B, D, E).
Теперь нам нужно принять различные параметры запроса в соответствии с ролью пользователя, но где следуетмы делаем это?В этом контроллере, в расширенном классе FormRequest или в отдельном контроллере?
Спасибо !!!