如何为用户设置多个角色以赋予许多权限

时间:2018-07-03 05:00:54

标签: laravel permissions

我创建了一个网站。 在此,我创建了一些程序包(例如电影程序包) 用户可以购买此套餐。 我为该用户购买一包电影时创建了观看该电影的权限。 但是如果用户想购买下一个包装,例如书籍包装,我需要允许他同时查看两个包装。

我通过spatie软件包创建了此权限。 在此,我为用户创建了角色。 电影角色成员可以观看电影。

我想知道我可以为一个用户设置多个角色吗? 我已经尝试过了,不能。

如果我想允许该用户查看两个软件包,我该怎么办。

我希望在这里有任何建议。

1 个答案:

答案 0 :(得分:0)

您的意思是是否可以为一个模型设置多个角色?是的你可以。它在Spatie's Laravel Permission readme中:

  

通过角色使用权限

     

可以将角色分配给任何用户

$user->assignRole('writer');

// You can also assign multiple roles at once
$user->assignRole('writer', 'admin');
// or as an array
$user->assignRole(['writer', 'admin']);
A role can be removed from a user:

$user->removeRole('writer');
     

角色也可以同步:

// All current roles will be removed from the user and replaced by the array given
$user->syncRoles(['writer', 'admin']);

因此,要向用户分配moviebook权限,您可以执行以下操作:

$user = App\User::find(1); // get the user
$user->arrignRole(['movie', 'book']); // assigning roles

如果用户已经具有角色,请尝试sync方法。这将删除所有以前的角色并附加指定的角色:

$user = App\User::find(1); // get the user
$user->syncRoles(['movie', 'book']); // syncing roles