目前,我已经为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
答案 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