У меня есть администратор ролей, модератор и член в моем приложении laravel. Приложение имеет фронт и бэкэнд. Я хочу разрешить доступ к разделу бэкэнд только для администратора и модератора. Я создаю SuperUsersMiddleware:Laravel 5.2 Контроллер промежуточного программного обеспечения для более чем одной роли
<?php
namespace CMS\Http\Middleware;
use Closure;
class SuperUsersMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! $request->user()->hasRole('administrator') || ! $request->user()->hasRole('moderator')) {
return redirect('/');
}
return $next($request);
}
}
Регистрация в Kernel.php:
......
protected $routeMiddleware = [
'superusers' => \CMS\Http\Middleware\SuperUsersMiddleware::class,
'administrator' => \CMS\Http\Middleware\AdminMiddleware::class,
'moderator' => \CMS\Http\Middleware\ModeratorMiddleware::class,
'auth' => \CMS\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \CMS\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
.....
и в моей папке бэкэнда создать Controller.php (все остальные контроллеры в серверной секции расширяет этот контроллер) и в __construct() функция set middleware:
...
public function __construct()
{
$this->middleware('superusers');
}
...
Но это не работает для меня. Я также создаю промежуточное программное обеспечение администратора и модератора, и он работает отдельно, но мне нужны оба вместе. Как это сделать? I tray:
public function __construct()
{
$this->middleware('administrator');
$this->middleware('moderator');
}
Но это также не может работать. Какова наилучшая практика для этой ситуации?