Как я могу использовать параметр промежуточного ПО laravel 5.1 для нескольких аутентификационных и защищенных маршрутов?

Я новичок в Laravel 5.1.
Как я могу использовать параметр промежуточного программного обеспечения для защиты моих маршрутов администратора от пользователей?
что-то вроде этого:

Route::group(['middleware' => 'auth:admin'], function()
/* Admin only Routes*/
{
//////
});

У меня есть поле «роль» в моей таблице «пользователи», которые получают два значения:

  • 1 для администратора
  • 2 для пользователей

В моем приложении пользователи имеют свой защищенный маршрут.
Я не хочу использовать пакеты.

0

Решение

Вы можете сделать что-то вроде этого. Введите класс Guard, затем используйте его для проверки пользователя. Вам не нужно передавать параметр действительно. Просто назовите ваше промежуточное ПО «admin» или что-то в этом роде Следующее промежуточное ПО будет проверять, является ли роль текущего пользователя администратором, и если нет, перенаправить на другой маршрут. Вы можете делать все, что вы предпочитаете в случае неудачи.

<?php

namespace Portal\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
*/
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->user()->role != 'admin') {
return redirect()->route('not-an-admin');
}
return $next($request);
}
}

Если вы хотите передать параметр, вы можете сделать это:

    public function handle($request, Closure $next, $role)
{
if($this->auth->user()->role != $role) {
return redirect()->route('roles-dont-match');
}
return $next($request);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]