#php #mysql #laravel #laravel-permission
#php #mysql #laravel #laravel-разрешение
Вопрос:
Как я могу установить правило для пользователя, чтобы он не вводил определенный маршрут?
Я добавил столбец в таблицу разрешений, назовите маршрут и введите маршруты вручную, и я создал промежуточное программное обеспечение, но проблема в том, что все мои контроллеры являются ресурсными, поэтому существует много маршрутов, так что как лучше всего это сделать?
public function handle($request, Closure $next)
{
$routeName = $request->route()->getName(); //users.create
$permission = Permission::whereRaw("FIND_IN_SET('$routeName',routes)")->first(); //find route
if($permission)
{
if(!$request->user()->can($permission->name))
{
abort(403);
}
}
return $next($request);
}
Ответ №1:
Вы можете использовать промежуточное программное обеспечение для защиты маршрутов.
Вы можете группировать маршруты следующим образом:
Route::group(['middleware' => ['can:publish articles']], function () {
//
});
Или вы можете защитить маршруты на контроллере следующим образом:
public function __construct()
{
$this->middleware(['role:super-admin','permission:publish articles|edit articles']);
}
Для получения информации здесь: https://spatie.be/docs/laravel-permission/v3/basic-usage/middleware