Laravel Blade 检查用户角色

Laravel Blade check user role

在 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

如果用户通过身份验证则显示主页和管理员 links,如果用户未通过身份验证则仅显示主页 link.

我的问题是如果用户是管理员,如何在此处进行检查?

我有来自 laravel 的默认登录系统,我刚刚在 table 用户 -> ('admin') 中添加了一列,其中 tinyint 值为 1 并且在此视频中 https://www.youtube.com/watch?v=tbNKRr97uVs 我找到了检查用户是否为管理员的代码

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

它在 AdminMiddleware.php 中有效 但它在 blade 中不起作用。如何让它工作??

            @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      

这只是为了清除(只需在用户 table 中再添加一列 tinyint 'admin' 并设置为 1)

我发现这么长篇大论,检查是否登录,检查角色,被添加到我的 blade 文件周围以分散注意力。您可以考虑添加自定义 blade 指令。在 AppServiceProvider boot() 函数中添加类似这样的内容

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

在blade中只需使用

@admin
<p>Only admin sees this</p>
@endadmin