Как проверить роль зарегистрированного пользователя в Laravel 5.8 с помощью фильтров маршрута - PullRequest
1 голос
/ 14 мая 2019

Мне нужно добавить что-то подобное, чтобы проверить роль пользователя в доступе к URL-адресам в группе маршрутов.

При добавлении я получил Attribute [filter] does not exist ошибку.

Нужно ли что-нибудь еще добавить в контроллер?

Route::filter('role', function()
{ 
  if ( Auth::user()->role !==1) {
     // do something
     return Redirect::to('/'); 
   }
}); 

Route::group(array('before' => 'role'), function() {            
Route::get('/user/edit/{id}', 'UsersController@edit');
Route::delete('/users/delete', 'UsersController@destroy');
});

Мой UsersController, мне нужно добавить дополнительный код?

class UsersController extends Controller
{

    public function __construct()
    {       
        $this->middleware('auth');
    }

1 Ответ

1 голос
/ 14 мая 2019

Вы получаете эту ошибку, потому что Route::filter() был удален из Laravel начиная с> 5.0, поэтому он пытается найти несуществующее Route::$filter статическое свойство.

Прямо сейчас (версия 5.8, когда я пишу это), лучший способ выполнить эту фильтрацию - использовать middlewares .

Пример ниже:

app/Http/Middleware/CheckRole.php

namespace App\Http\Middleware;

use Auth;
use Closure;
use Redirect;

class CheckRole
{
    public function handle($request, Closure $next)
    {
        if (Auth::user()->role !== 1) {
            return Redirect::to('/');
        }

        return $next($request);
    }
}

app/Http/Kernel.php

// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    // Other middlewares...    

    'role' => \App\Http\Middleware\CheckRole::class,
];

web.php

Route->group(['middleware' => 'role'], function() {            
    Route::get('/user/edit/{id}', 'UsersController@edit');
    Route::delete('/users/delete', 'UsersController@destroy');
});

Я полагаю, вы также можете приписать промежуточное программное обеспечение непосредственно в конструкторе вашего контроллера, а не приписывать его в списке маршрутов:

class UsersController extends Controller
{
    public function __construct()
    {       
        $this->middleware('role');
    }

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...