gpt4 book ai didi

php - Laravel 获取用户权限

转载 作者:行者123 更新时间:2023-12-05 05:24:07 25 4
gpt4 key购买 nike

我为我的用户设置了权限/角色。这是通过 6 个表

  • 用户
  • 角色
  • 权限
  • 角色用户
  • 权限角色
  • permission_user

而用户类具有以下功能:

public function permissions(){
return $this->belongsToMany(Permission::class);
}

public function roles(){
return $this->belongsToMany(Role::class);
}

权限类具有以下功能

public function roles() {
return $this->belongsToMany(Role::class);
}

public function users() {
return $this->hasMany(User::class);
}

最后Role有以下功能:

public function permissions() {
return $this->belongsToMany(Permission::class);
}
public function users() {
return $this->belongsToMany(User::class);
}

所以现在我想请求一个具有列出的所有权限和所有角色的用户,所以我创建了:

$u = \Auth::user();
return User::with('roles.permissions')->with('permissions')->find($u->id);

返回类似的东西

{
id: 53,
name: "name",
username: "username",
avatar: "",
email: "email",
created_at: "2016-02-20 14:36:54",
updated_at: "2016-02-20 14:36:54",
roles: [{
id: 1,
name: "edit_forum",
label: "Edit Forum",
created_at: "2016-02-20 12:33:50",
updated_at: "2016-02-20 12:33:50",
permissions: [{
id: 2,
name: "Testing stuff",
label: null,
created_at: "2016-02-20 16:50:02",
updated_at: "2016-02-20 16:50:02"
}]
}],
permissions: [{
id: 1,
name: "Testing",
label: null,
created_at: "2016-02-20 16:50:02",
updated_at: "2016-02-20 16:50:02"
}]
}

如您所见,它的角色的权限在一个单独的数组中,现在我正在尝试两件事,但我似乎无法弄清楚如何实现这些功能:

首先:获取用户自身的所有权限和1个数组中的权限。

第二个:通过单个作用域/函数获取它

最佳答案

Permission 类具有以下功能:

public function users() {
return $this->hasMany(User::class);
}

这应该是一个多对多关系,而不是一对多,所以你可以这样写方法:

public function users() {
return $this->belongsToMany(User::class);
}

因此 permission_user 数据透视表将用于维护关系和关于您的代码,您可以这样做:

$u = \Auth::user(); // get the authenticated User
return $u->load('roles.permissions'); // Load the roles and permissions of loaded User

因此,无需再单独查询加载权限和角色。你可以使用这样的东西:

foreach($u->roles as $role) {

// $role->title; // for example

foreach($role->permissions as $permission) {

// $permission->title; // for example
}
}

请记住,$u->roles 将返回一个集合,其中每个 $role(当您调用 $role->permissions ) permissions 也将是一个集合。


注意:您可以关注this article我的想法是为了获得更多想法。

关于php - Laravel 获取用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35525685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com