簡體   English   中英

如何從在Laravel中具有多個角色的用戶獲取權限?

[英]How to get permissions from a user that has multiple roles in Laravel?

我正在構建一個新的laravel應用程序,其中用戶可以具有多個角色,並且這些角色具有多個權限(權限) 現在,我想從某個用戶那里獲得所有權限。

我正在使用Laravel 5.8和Eloquent。 我可以從用戶那里獲得角色,從角色那里獲得權限,但不能從用戶那里獲得權限。

 dd(Auth::user()->roles->rights);

模型用戶:

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

模特角色:

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

    public function rights()
    {
        return $this->belongsToMany(Right::class);
    }

模特兒權利

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

我希望通過一名用戶來獲得一個過去的用戶的所有權限。

由於一個用戶可以具有多個角色,而一個角色可以具有許多權限,因此您將需要遍歷每個角色

//Retrieving rights associated with the user
public function retrieveRightsAssociatedWithUser($user){
    $rightsAssociatedWithUser = [];
    foreach($user->roles as $role){
        $rightsAssociatedWithUser[] = $role->rights; 
    }
    return $rightsAssociatedWithUser;
}

您可以向用戶模型添加方法right():

public function rights()
    {
        return $this->hasManyThrough(Role::class, Right::class);
    }

然后使用$ user-> rights();


附加信息:Laravel還沒有為多對多的想法。

您可以安裝包裝

composer require staudenmeir/eloquent-has-many-deep

並使用此:

class User extends Model
{
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function rights()
    {
        return $this->hasManyDeep(Right::class, ['role_user', Role::class]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM