Вам необходимо промежуточное ПО для защиты вашего маршрута от доступа ограниченного пользователя.
Создайте промежуточное ПО, подобное этому, в папке промежуточного ПО
<?php
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
public function handle($request, Closure $next)
{
if($request->user()->hasRole('admin'){
return $next($request);
}else{
return abort(403,'Unauthorized Access');
}
}
}
А теперь поместите промежуточное ПО в массив промежуточного ПО маршрута в файле ядра:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
//Add the role middleware like this which we have just created.
'roles' => \App\Http\Middleware\CheckRole::class,
];
И, наконец, добавьте ваши маршруты в группу следующим образом.
Route::group(['middleware' => ['roles', 'auth:web']], function ($router) {
// Place your route here
});
И, наконец, не забудьте очистить кеш конфигурации с помощью этой команды:
php artisan cache:config
Надеюсь, это поможет вам