使用laravels Spatie/Roles是否有办法获取当前登录用户的角色?我试过了
if($this->hasRole('admin')) { //do something }
但行不通
a11xaf1n1#
用户()-〉获取角色名称();这将返回一个集合,其中包含用户附加到的所有角色。
fd3cxomn2#
在使用Spatie\Permission\Traits\HasRoles特征的模型中,在大多数情况下是User,您可以调用各种方法来验证或检索角色。它们是:
Spatie\Permission\Traits\HasRoles
User
roles
hasRole
hasAnyRole
hasAllRoles
getRoleNames
对于给定的用户,
$roles = $user->getRoleNames();// Returns a collection
是的。
ma8fv8wu3#
{{ Auth::user()->roles->pluck('name') }}
f1tvaqid4#
我明白了,对于那些在那里的人来说,这就是你要做的。
if(Auth::user()->hasRole('my_role_name')) { // do something } //otherwise do something else
e5nszbig5#
如果您知道用户只有一个角色(例如:“customer”),则可以按如下方式显示:
{{ 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
vmjh9lq96#
使用Laravel 9和Spatie v5,您可以使用主计长
if(auth()->user()->hasRole('name')){}
刀片
@role('name')
tag5nh1u7#
使用laravel 8和刮刀5.5如果用户只有一个角色;您可以用途:验证()-〉用户()-〉角色-〉拔出(“id”)-〉第一个()要获取当前登录用户的角色ID,可以选择用途:用户()-〉角色-〉拔出(“名字”)-〉名字();获取角色的名称
7条答案
按热度按时间a11xaf1n1#
用户()-〉获取角色名称();
这将返回一个集合,其中包含用户附加到的所有角色。
fd3cxomn2#
在使用
Spatie\Permission\Traits\HasRoles
特征的模型中,在大多数情况下是User
,您可以调用各种方法来验证或检索角色。它们是:
roles
hasRole
hasAnyRole
hasAllRoles
getRoleNames
用法示例
对于给定的用户,
是的。
ma8fv8wu3#
f1tvaqid4#
我明白了,对于那些在那里的人来说,这就是你要做的。
e5nszbig5#
如果您知道用户只有一个角色(例如:“customer”),则可以按如下方式显示:
然后,您可以签入刀片文件:
或者甚至简单得多:
vmjh9lq96#
使用Laravel 9和Spatie v5,您可以使用
主计长
刀片
tag5nh1u7#
使用laravel 8和刮刀5.5
如果用户只有一个角色;您可以用途:
验证()-〉用户()-〉角色-〉拔出(“id”)-〉第一个()
要获取当前登录用户的角色ID,可以选择用途:
用户()-〉角色-〉拔出(“名字”)-〉名字();
获取角色的名称