Наличие двух типов пользователей в Laravel 5

Мне интересно, есть ли лучший способ обработки того, как у меня есть мои аутентифицированные пользователи в отношении разных типов пользователей.

У меня есть основной пользователь и пользователь-администратор. Основной пользователь, очевидно, будет иметь доступ только к базовым страницам, и пользователь-администратор должен иметь доступ к другим страницам, к которым у основного пользователя нет доступа.

То, что я делаю, это: я создал столбец super_user в своей таблице и добавил:

if(Auth::user()->super_user == 0) { return Redirect::to('/')->with('error', 'You do not have permission to access this page'); } 

на каждую страницу, к которой я не хочу, чтобы базовый пользователь мог получить доступ. Теперь это сработало, но я начинаю переносить свои приложения на Laravel 5, и я думаю, что я могу по-другому справиться с этим.

Лучший способ справиться с ролью пользователя в вашем случае – использовать Middleware .

  1. Создание промежуточного программного обеспечения:
 namespace App\Http\Middleware; use Closure; use Illuminate\Contracts\Auth\Guard; class Admin { /** * The Guard implementation. * * @var Guard */ protected $auth; /** * Create a new filter instance. * * @param Guard $auth * @return void */ public function __construct(Guard $auth) { $this->auth = $auth; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!$this->auth->getUser()->super_user) { return redirect->to('/') ->with('error', 'You do not have permission to access this page'); } } return $next($request); } } 
  1. Добавьте его в app\Http\Kernel.php :
 protected $routeMiddleware = [ 'admin' => 'App\Http\Middleware\Admin', ]; 
  1. Используйте промежуточное ПО в своих маршрутах:
 Route::group(['middleware' => ['admin']], function() { // your route });