现在我已经成功设置了users-role_user-roles表并在它们之间建立了连接,我如何在Laravel中使用这些角色

时间:2018-02-05 16:59:38

标签: php laravel

目前,我已经为1个用户提供了admin的角色,每个注册的新用户都将被分配一个用户角色。角色位于名为roles的表中,用户位于名为users的表中,这两者之间的连接位于名为role_user的表中。现在我无法弄清楚如果记录的用户是管理员,如何更改我的标题以包含管理菜单。

Header.blade.php

<section class="header">
    <div class="wrapper">
        <nav class="navigation">
            <ul>
                <li><a href="{{ route('home') }}">Images</a></li>
                @auth
                <li><a href="{{ route('upload') }}">Upload</a></li>
                <li class='logOut'><a href="{{ route('logout') }}">Logout</a></li>
                @endauth
                @guest
                <li class="signUp">Sign Up</li>
                <li class="logIn">Log In</li>
                @endguest
            </ul>
        </nav>
    </div>
</section>

Role.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    public function users(){
        return $this->belongsToMany('App\User');
    }
}

user.php的

<?php

namespace App;

use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;


class User extends Model implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;
    public function images(){

        return $this->hasMany('App\Image');
    }

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

数据库表

Table - users
Columns - id, username, password

Table - roles
Columns - id, name, description

Table - role_user
Columns - id, user_id, role_id

1 个答案:

答案 0 :(得分:1)

将此功能添加到模型中以检查角色

class User extends Model implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;


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

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

         return $result;
      }
}

在你的观点中

@if((\Auth::check() && \Auth::user()->hasRole('admin')
    @include('admin.nav')
@endif