Я хочу сделать весь контроллер доступным только для администраторов, но когда я пытаюсь получить доступ к обычной учетной записи пользователя, они все равно могут получить доступ к методам в AdminController
:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function __construct(Request $request)
{
$this->middleware('auth');
if (!Auth::guest())
{
if (!$request->user()->hasRole('admin'))
{
return redirect('/');
}
}
else
{
return redirect('/');
}
}
public function index()
{
return view('admin.index');
}
}
А вот модель User
, где она проверяет роли:
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function hasRole($role)
{
return null !== $this->roles()->where('name', $role)->first();
}