Как защитить админку от пользователей по ролям в laravel 5.6? - PullRequest
0 голосов
/ 25 июня 2018

Я искал простые версии ролей и пользователей Laravel 5.6+.Я хочу иметь один users стол.Поэтому я добавил user_type в свою таблицу как string в

$table->enum('role', ['admin', 'user']);

Какие файлы я должен создать или обновить, чтобы защитить все по маршруту /admin.А не разрешить использовать admins маршруты для users?

1 Ответ

0 голосов
/ 25 июня 2018

Вы должны создать промежуточное программное обеспечение, которое активно на всех маршрутах / admin. В этом промежуточном программном обеспечении вы должны проверить, имеет ли пользователь, вошедший в систему (Auth::user()), роль «admin».

Auth::user() ссылается на User -модель.

Таким образом, в User -модели вы можете создать функцию типа isAdmin():

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

В промежуточном программном обеспечении (или там, где вы хотите) вы можете просто написать

if(Auth::user()->isAdmin()) {
    // do something if user is admin
} else {
    // do something if user is not admin
}

Поскольку он находится в User -модели, вы также можете написать $user->isAdmin() для обычных пользовательских моделей.

...