Search code examples
phplaravellaravel-5.4rolesvoyager

Laravel Voyager: only see a menu item if the user is admin


I'm using Voyager, and I would like to solve, if the user is admin, see one more menu item in the welcome page.

Thank you in advance for the answers!

<body>
  <div class="flex-center position-ref full-height">
    @if (Route::has('login'))
      <div class="top-right links">
        @auth
          <a href="{{ url('/home') }}">Home</a>
        @else
          <a href="{{ route('login') }}">Login</a>
          <a href="{{ route('register') }}">Register</a>
        @endauth
      </div>
    @endif

    <div class="content">
      <div class="title m-b-md">
        Laravel
      </div>

      <div class="links">
        <a href="https://laravel.com/docs">Documentation</a>
        <a href="https://laracasts.com">Laracasts</a>
        <a href="https://laravel-news.com">News</a>
        <a href="https://forge.laravel.com">Forge</a>
        <a href="https://github.com/laravel/laravel">GitHub</a>
      </div>
    </div>
  </div>
</body>

Solution

  • You can check for the role of the authenticated user inside your view. Maybe something like this:

    @if (Auth::user()->hasRole('admin'))
        <a href="...">This can only be seen by admins</a>
    @endif