どのようにパッケージを使用せずにララベルのユーザーロールの独自のミドルウェアを作成するには?



ステップ1
ロールチェック論理のためのミドルウェアの作成
~$ php artisan make:middleware RoleChecker

ステップ2Middlewere/RoleChecker.php
public function handle($request, Closure $next, $super_adminRole, $adminRole,  $sellerRole)
{
    $roles = Auth::check() ? Auth::user()->role->pluck('name')->toArray() : [];

    if (in_array($super_adminRole, $roles)) {
        return $next($request);
    } else if (in_array($adminRole, $roles)) {
        return $next($request);
    } else if (in_array($sellerRole, $roles)) {
        return $next($request);
    }

    return Redirect::route('home');
}

In the above code we assume that there are 4 types of users. Super Admin, Admin, Seller and Normal Auth User. We don't need to check the normal users in the middleware. So we are checking the remaining three Roles.



ステップ3Kernel.php
protected $routeMiddleware = [
    'roleChecker' => \App\Http\Middleware\RoleChecker::class,
];

Here we added the middleware



ステップ4web.php
middleware(['roleChecker:super_admin,admin,seller']);
middleware(['roleChecker:super_admin,null,null']);
middleware(['roleChecker:null,admin,null']);
middleware(['roleChecker:null,null,seller']);

Use any of above code snippet to set middleware on any Route



ノート
  • これらの3つのロールのいずれかにNULLを設定すると、そのロールが制限されます.それで、middleware(['roleChecker:null,null,seller']);ならば、売り手だけがアクセスすることができます.
  • ありがとうシェア.