displaying navbar according to user roles and permisions laravel

3.6k views Asked by At

I am implementing user roles in laravel 5 and I want to update the navbar according to the user permissions. The default navbar has A, B, and C menus which redirect to the specific pages. Let's say that user 1 can view page A and B, while user 2 can view only C. When user 1 logs in, I want the navbar to show only A and B menus. I want to do this in a single page and don't want to create a master page for every user role (as was suggested to me). Any help or hint is appreciated.

1

There are 1 answers

0
haakym On BEST ANSWER

Firstly you need to explain how your roles are set up in your system. So consider that the following example has some assumptions...

If for example your User model has a relationship to a Roles model, as so:

public function roles()
{
    return $this->belongsToMany('\App\Role');
}

You can then add a method to your User model to check if a User has a certain role:

public function hasRole($name)
{
    foreach ($this->roles as $role) 
    {
        if ($role->name == $name) return true;
    }

    return false;
}

You can then do something like this in your nav view (using blade)

@if (Auth::user()->hasRole('admin'))
  <!-- nav links here -->           
@endif