Laravel空间角色获取当前用户角色

ca1c2owp  于 2022-11-18  发布在  其他
关注(0)|答案(7)|浏览(192)

使用laravels Spatie/Roles是否有办法获取当前登录用户的角色?
我试过了

if($this->hasRole('admin')) { //do something }

但行不通

a11xaf1n

a11xaf1n1#

用户()-〉获取角色名称();
这将返回一个集合,其中包含用户附加到的所有角色。

fd3cxomn

fd3cxomn2#

在使用Spatie\Permission\Traits\HasRoles特征的模型中,在大多数情况下是User,您可以调用各种方法来验证或检索角色。
它们是:

  • roles
  • hasRole
  • hasAnyRole
  • hasAllRoles
  • getRoleNames

用法示例

对于给定的用户,

$roles = $user->getRoleNames();// Returns a collection

是的。

ma8fv8wu

ma8fv8wu3#

{{ Auth::user()->roles->pluck('name') }}
f1tvaqid

f1tvaqid4#

我明白了,对于那些在那里的人来说,这就是你要做的。

if(Auth::user()->hasRole('my_role_name'))
{
    // do something
}
  //otherwise do something else
e5nszbig

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
vmjh9lq9

vmjh9lq96#

使用Laravel 9和Spatie v5,您可以使用
主计长

if(auth()->user()->hasRole('name')){}

刀片

@role('name')
tag5nh1u

tag5nh1u7#

使用laravel 8和刮刀5.5
如果用户只有一个角色;您可以用途:
验证()-〉用户()-〉角色-〉拔出(“id”)-〉第一个()
要获取当前登录用户的角色ID,可以选择用途:
用户()-〉角色-〉拔出(“名字”)-〉名字();
获取角色的名称

相关问题