Laravel Blade проверяет роль пользователя

В шаблонах laravel Blade мы можем исключить некоторые части HTML с помощью этого кода:

        @if (Auth::user())
            <li><a href="{{ url('/home') }}">Mein Profil</a></li>
            <li><a href="{{ url('/admin') }}">Admin</a></li>
        @else
            <li><a href="{{ url('/home') }}">Mein Profil</a></li>
        @endif

Если пользователь аутентифицирован, показать домашнюю ссылку и ссылку администратора, а если пользователь не аутентифицирован, показать только домашнюю ссылку.

Мой вопрос: как сделать здесь проверку, если пользователь является администратором?

У меня есть система входа по умолчанию из laravel, и я только что добавил еще один столбец в таблицу users -> ('admin') со значением tinyint 1 и в этом видео https://www.youtube.com/watch?v=tbNKRr97uVs я нашел код для проверки, является ли пользователь администратором

 if (!Auth::guest() && Auth::user()->admin )

и это работает в AdminMiddleware.php, но не работает в лезвии. Как заставить это работать??


person lewis4u    schedule 03.05.2016    source источник
comment
Попробуйте выйти из системы и войти снова, это может быть из-за того, что вы добавили столбец после входа в систему, и он может не загружаться в сеансе Auth::user. также добавьте свой ответ дампа этого echo "<pre>"; print_r(Auth::user()); die() в свой вопрос, чтобы мы могли видеть, идет ли столбец администратора или нет   -  person Qazi    schedule 03.05.2016
comment
Вы получаете какую-либо ошибку?   -  person Abbasi    schedule 03.05.2016
comment
Я сделал маршрут проверки, и он выводит проверку OK Route::get('check', function() { echo 'check OK'; }); и с этим Route::get('check', function() { print_r(Auth::user()); }); ничего не печатает.....даже ошибки!   -  person lewis4u    schedule 04.05.2016
comment
Извините, ребята, но теперь это работает ..... я думаю, мне нужно было просто перезагрузить сервер :( мой плохой   -  person lewis4u    schedule 04.05.2016


Ответы (2)


Я нахожу такой многословный, проверьте, вошли ли вы в систему, проверьте роль, добавляя все вокруг моих блейд-файлов, чтобы отвлекать. Вы можете рассмотреть возможность добавления пользовательской директивы блейда. Добавьте что-то подобное в функцию загрузки () AppServiceProvider

        Blade::if('admin', function () {            
            if (auth()->user() && auth()->user()->admin) {
                return 1;
            }
            return 0;
        });

в лезвии просто используйте

@admin
<p>Only admin sees this</p>
@endadmin
person ravenshill    schedule 21.01.2019

            @if (!Auth::guest() && Auth::user()->admin)
                <li><a href="{{ url('/home') }}">Mein Profil</a></li>
                <li><a href="{{ url('/admin') }}">Admin</a></li>
            @else
                <li><a href="{{ url('/home') }}">Mein Profil</a></li>
            @endif      

это работает только для очистки (просто добавьте еще один столбец tinyint 'admin' в пользовательскую таблицу и установите значение 1)

person lewis4u    schedule 04.05.2016