Только роли администраторов могут иметь доступ к / admin. Но это не работает - PullRequest
0 голосов
/ 25 мая 2020

Пользователь. php:

public function IsAdmin(){
    return $this->role=='admin';
}

Checkifadmin. php (промежуточное ПО):

public function handle($request, Closure $next)
{
  if (auth()->user()->role=='admin') {
    return redirect(route('home'));
  }
  return $next($request);
}

Ядро. php:

В защищенном маршруты

'checkifadmin' =>\App\Http\Middleware\Checkifadmin::class,

create_users_table. php

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->string('role')->default('customer');
            $table->rememberToken();
            $table->timestamps();
});

web. php:

Route::get('admin',function(){
return view('layouts.admin');
})->middleware(['checkifadmin']);
Route::get('/', function () {
    return view('index');
})->name('home');
Route::get('/shop/product', function () {
    return view('shop.product');
})->name('shop.product');
Route::get('/shop/shoppingcard', function () {
    return view('shop.shoppingcard');
})->name('shop.shoppingcard');
Route::get('/shop/checkout', function () {
    return view('shop.checkout');
})->name('shop.checkout');

Auth::routes();

В моем пользователе 2 роли. Клиент и администратор, только администраторы должны иметь доступ к / admin, но по какой-то причине он не работает. Я скопировал и вставил все возможные коды, которые я сделал по этому поводу, заранее спасибо

1 Ответ

1 голос
/ 25 мая 2020

Промежуточное ПО должно выглядеть следующим образом, если только admin разрешено в

Checkifadmin. php (промежуточное ПО):

public function handle($request, Closure $next)
{
    if (auth()->user()->role !='admin') {
        return redirect(route('home'));
    }

    return $next($request);

}

Тогда вы можете оставить свой маршрут как есть

Route::get('admin',function() {
    return view('layouts.admin');
})->middleware(['checkifadmin']);
...