使用 laravel Spatie/Roles 有没有办法获取当前登录的用户角色?
我试过了
if($this->hasRole('admin')) { //do something }
Run Code Online (Sandbox Code Playgroud)
但它不会工作
Aug*_*ura 25
在使用该Spatie\Permission\Traits\HasRoles
特征的模型中(在大多数情况下User
),您可以调用各种方法来验证或检索角色。
他们是:
roles
hasRole
hasAnyRole
hasAllRoles
getRoleNames
对于给定的用户,
$roles = $user->getRoleNames();// Returns a collection
Run Code Online (Sandbox Code Playgroud)
参考这里。
Mai*_*rey 12
如果您知道用户只有一种角色(例如:“客户”),则可以按如下方式显示:
{{ Auth::user()->roles->pluck('name')[0] ?? '' }}
// or with the auth() helper:
{{ auth()->user()->roles->pluck('name')[0] ?? '' }}
// output: "customer"
Run Code Online (Sandbox Code Playgroud)
然后你可以检查你的刀片文件:
@if ( auth()->user()->roles->pluck('name')[0] ?? '' === 'customer' )
<h1>Hello Customer {{auth()->user()->name }}</h1>
...
@endif
Run Code Online (Sandbox Code Playgroud)
或者甚至更简单:
@role('customer')
I am a Customer!
@else
I am not a Customer ...
@endrole
Run Code Online (Sandbox Code Playgroud)
想通了,对于你们这些人来说,这就是你们的做法。
if(Auth::user()->hasRole('my_role_name'))
{
// do something
}
//otherwise do something else
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用以下命令获取当前登录的管理员用户名
$user->getRoleNames()->first();
Run Code Online (Sandbox Code Playgroud)
得到的回应是
“超级管理员”
归档时间: |
|
查看次数: |
12190 次 |
最近记录: |