【发布时间】:2019-08-19 22:50:54
【问题描述】:
使用 laravel Spatie/Roles 有没有办法获取当前登录的用户角色?
我试过了
if($this->hasRole('admin')) { //do something }
但它不会工作
【问题讨论】:
使用 laravel Spatie/Roles 有没有办法获取当前登录的用户角色?
我试过了
if($this->hasRole('admin')) { //do something }
但它不会工作
【问题讨论】:
在使用Spatie\Permission\Traits\HasRoles trait(大多数情况下为User)的模型中,您可以调用各种方法来验证或检索角色。
它们是:
roleshasRolehasAnyRolehasAllRolesgetRoleNames对于给定的用户,
$roles = $user->getRoleNames();// Returns a collection
【讨论】:
{{ Auth::user()->roles->pluck('name') }}
【讨论】:
想通了,对于那些在场的人来说,这就是你的做法。
if(Auth::user()->hasRole('my_role_name'))
{
// do something
}
//otherwise do something else
【讨论】:
如果您知道用户只有一个角色(例如:“客户”),那么您可以将其显示如下:
{{ Auth::user()->roles->pluck('name')[0] ?? '' }}
// or with the auth() helper:
{{ auth()->user()->roles->pluck('name')[0] ?? '' }}
// output: "customer"
然后你可以检查你的刀片文件:
@if ( auth()->user()->roles->pluck('name')[0] ?? '' === 'customer' )
<h1>Hello Customer {{auth()->user()->name }}</h1>
...
@endif
甚至更简单:
@role('customer')
I am a Customer!
@else
I am not a Customer ...
@endrole
【讨论】:
Auth::user()->getRoleNames();
这将返回一个包含用户附加到的所有角色的集合。
【讨论】: