auth()->user()->isAdmin() || auth()->user()->isManager(). Как лучше поступить? Создать middleware или в модели метод?
мидлвар или гейт
мидлвар can + гейт
Abilities, Policy (если завязка на некую сущность), а далее как указали выше появится возможность использовать посредник can, правило валидации can и т.д. а если исходить из практики, то проверки должны быть сделаны не на основе роли, а разращений, т.е. не can('admin'), а can('update post'), can('view post') и т.д.
У меня это используется, например, на выборе компонента страницы. Т.е. любой пользователь может просматривать страницу, но у нее будет разный макет - $pageComponent = auth()->user()->isAdmin() || auth()->user()->isManager() ? 'Advancement/PlanDetailsAdministrationPage' : 'Advancement/PlanDetailsEmployeePage';
return match (true) { $user->can('view-admin-page') => 'Advancement/PlanDetailsAdministrationPage', $user->can('view-employee-page') => 'Advancement/PlanDetailsEmployeePage', };
Обсуждают сегодня