Как использовать несколько пользовательских ролей промежуточного программного обеспечения внутри контроллера на Laravel? - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в Laravel и примеряю роль пользователя промежуточного программного обеспечения.Я создал 2 промежуточных программного обеспечения, 'superadmin' и 'admin', как показано ниже.

Для superadmin

public function handle($request, Closure $next)
{
    if ($request->user() && $request->user()->permission != '1')
    {
        return new Response(view('unauthorized')->withRole('Super Admin'));
    }
    return $next($request);
}

Для администратора

public function handle($request, Closure $next)
{

    if ($request->user() && $request->user()->permission != '2')
    {
        return new Response(view('unauthorized')->withRole('Admin'));
    }
    return $next($request);
}

Я установил на свой целевой контроллер через__конструктивный метод.Нет проблем, если контроллеру требуется только одно промежуточное ПО.Но проблема на контроллере, которая требует как промежуточного программного обеспечения (superadmin & admin оценена).Я стараюсь, как показано ниже, но не работает.

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

Ценится за все советы, спасибо.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

вы можете использовать промежуточное ПО в маршруте в web.php

Route::group(['middleware' => ['permission1','permission2']], function () {
    //
});
0 голосов
/ 17 апреля 2019

вы можете создать одно промежуточное программное обеспечение и иметь динамический параметр для проверки разрешения.Создайте новое промежуточное программное обеспечение для определения разрешения пользователя.В этом промежуточном программном обеспечении вы можете сделать это,

 public function handle($request, Closure $next, $permission = 0)
 {
        //allowed only to specified permission
        if (($request->user() && $request->user()->permission == $permission) || $permission === 0) {
            return $next($request);
        }

     return new Response(view('unauthorized')->withRole('Admin'));
 }

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

public function __construct()
{
    //allow only admin
    $this->middleware('permission:1');
    //allow only super admin
    $this->middleware('permission:2');
   //allow both admin and supper admin
    $this->middleware('permission');
}

Для получения дополнительной информации обратитесь к этой ссылке .Надеюсь, это поможет!

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