Laravel проверяет роль пользователя в конструкции функции - PullRequest
0 голосов
/ 04 мая 2018

Я хочу сделать весь контроллер доступным только для администраторов, но когда я пытаюсь получить доступ к обычной учетной записи пользователя, они все равно могут получить доступ к методам в 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();
    }

1 Ответ

0 голосов
/ 04 мая 2018

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

public function __construct()
{
    $this->middleware('adminOnly');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...