Это хороший случай использования Middlewares для фильтрации HTTP-запросов.
Вы также могли бы сделать что-то условную в файле маршрутов, например:
if (Auth::user()->isAdmin()){
Route::get('/', '[email protected]');
}
else {
Route::get('/', '[email protected]');
}
В зависимости от того, что ваше приложение выглядит, вы можете определить IsAdmin() в модели пользователя. Это очень простой пример, когда у вас есть столбец с именем role_id, а id nr 1 - admin. Если проверка подлинности пользователя администратором, то отображается верно, в противном случае неверно:
public function isAdmin()
{
return Auth::user()->role_id == 1;
}
Более динамичный и современный подход должен был бы создать таблицу ролей и связать роль с пользователем с таблицей role_user поворота.
Если вы хотите, чтобы он сделал еще один шаг, вы можете создать таблицу разрешений и связать роль с разрешениями с помощью сводной таблицы разрешений. Затем вы можете в своем приложении определить, что требуется разрешение, чтобы иметь возможность выполнить действие и добавить все разрешения, предоставляемые данной ролью пользователя в этой сводной таблице. Затем вы просто проверяете, имеет ли пользователь (с определенной ролью) данные разрешения.
Да, это возможно. Вы можете создавать группы промежуточного программного обеспечения. Вы используете авторизацию Laravel? Вы уже создали нечто вроде AdminMiddleware? –
@JanWillem Я понимаю, что текущий пользователь либо администратор, либо обычный член вроде этого: '@if (Auth :: user() -> admin) {// admin} else {// regular member}' – stack