These are chat archives for LaravelRUS/chat

21st
Dec 2017
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:37

Изучаю штатную авторизацию, с простой задачей настроить /admin - только для авторизованных пользователей осилил, а вот при ее усложнении не пойму куда проще копать.
Суть задачи - админка доступна только для Админов (здесь штатный посредник auth справляется на ура, прописываю его в группу роутов и все ок)
Далее должны быть пользователи которым разрешен доступ до некоторых страниц фронтэнда.
Пользователей хранить также в БД, с доп.полями телефон, компания и т.д.

А вот здесь голова пухнет что проще сделать?

  1. Сделать две отдельные таблицы Users и Clients, для первой штатный посредник на /admin/ для второй группы писать своего посредника (минусы негибкость, да и как то некрасиво)
  2. Расширить модель и таблицу Users полем is_admin и дополнительными полями и уже по нему давать доступы, если is_admin то фронт+админка, если просто авторизованный то только весь фронт, если гость то выборочные страницы фронта
  3. Ставить доп компонент типа https://github.com/cartalyst/sentinel или https://github.com/Zizaco/entrust (минусы излишняя функциональность, дополнительное изучение компонента)

По второму пункту понимаю, что https://laravel.com/docs/5.5/authorization
Но никак не могу понять этих гейтов и политик.

Может кто может объяснить еще попроще или дать пример кода или ссылку на статью где разжевано еще подробнее?

Ваня Devium
@webdevium
Dec 21 2017 15:38
простой пользователь про админку вообще не знает, правда?
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:38
да не знает
Ваня Devium
@webdevium
Dec 21 2017 15:39
ну тогда просто admin => true || false в модельке заведи
и все
в роуты админки не пускай !user || !user->isAdmin
Lander931
@Lander931
Dec 21 2017 15:40
@Vmelnikoff у тебя в /admin пускает всех кто залогинился, так и задумано?
Ваня Devium
@webdevium
Dec 21 2017 15:40
если нужны права на кишки админки - https://github.com/spatie/laravel-permission
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:41
@Lander931 нет здесь как раз и нужна проверка на is_admin
Ваня Devium
@webdevium
Dec 21 2017 15:41
с пакетом можно даже без is_admin. Типа если у user->roles()->count() > 0 - он админ, его пускать
как-то так, вариантов решений - уйма
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:43

@webdevium а можно пример?

Route::group(['prefix' => 'admin', 'middleware' => ['auth']], function () {
    Route::get('/', 'DashboardController@index')->name('admin.index');
});

Как мне здесь прописать это условие?
!user || !user->isAdmin

Ваня Devium
@webdevium
Dec 21 2017 15:43
еще одну мидлварю сделай, свою, личную, и добавь в массив после auth
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:44
@webdevium Ага все же свою мидлварю делать, понятно. Спасибо.
А есть ссылки на подобные рецепты?
@Lander931 в методе проверяешь поле admin у юзера, если тру то пускаешь иначе редирект или что хочешь
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:46
@Lander931 спасибо
KarmaBot
@KarmaBot
Dec 21 2017 15:46
Спасибо (+1) для @Lander931 принято! Текущая карма +4.
Vitaly Melnikov
@Vmelnikoff
Dec 21 2017 15:47
@webdevium спасибо
KarmaBot
@KarmaBot
Dec 21 2017 15:47
Спасибо (+1) для @webdevium принято! Текущая карма +356.
JhaoDa
@jhaoda
Dec 21 2017 17:36
@Vmelnikoff хочу заметить, что ты изучаешь штатную в первую очередь аутентификацию, а не авторизацию.