Laravel Bouncer Package示例代码不起作用

时间:2019-06-13 09:48:55

标签: php laravel package

我正在使用Laravel 5.8,PHP 7.3.3 安装JosephSilber / bouncer软件包以管理角色,权限等 我从样本中尝试了这个,没什么花哨的:

Bouncer::allow('superuser')->to('create-account'); //works, creates role 'superuser', creates ability 'create-account'
Bouncer::allow('employer')->to('create-employee'); //works
$john = App\User::where('email','john@gmail.com')->first(); //works, finds John
$john->assign('superuser');  //works, John is now a user user
$john->can('create-account'); // works, returns true
$john->can('create-employee'); // works, returns false


$boolean = $john->isAn('superuser') ; //ERROR=> array_key_exists(): The first argument should be either a string or an integer

不确定为什么会出现此错误。 User :: whereIs('superuser')-> get()等类似的问题

我尝试调试,并且在BaseClipboard.php中调用以下行时似乎出现了问题。此调用中正在发生这种情况,到目前为止,我可以验证传入的参数。

$authority->roles()->get([
            'name', Models::role()->getQualifiedKeyName()
        ]) 

但是我无法超越。感谢任何帮助。


无法弄清楚如何获得堆栈跟踪的干净转储。但是这里是复制和粘贴。我认为只有最后几个会感兴趣

ErrorException

... \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Collection.php2029

51

array_key_exists

... \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Collection.php2029

50

Illuminate \ Support \ Collection offsetExists

... \ vendor \ laravel \ framework \ src \ Illuminate \ Support \ Collection.php876

49

Illuminate \ Support \ Collection获取

... \ vendor \ silver \ bouncer \ src \ BaseClipboard.php82

48

Silber \ Bouncer \ BaseClipboard getRolesLookup

... \ vendor \ silver \ bouncer \ src \ CachedClipboard.php234

47

Silber \ Bouncer \ CachedClipboard Silber \ Bouncer {关闭}

... \ vendor \ silver \ bouncer \ src \ CachedClipboard.php248

46

Silber \ Bouncer \ CachedClipboard Sear

... \ vendor \ silver \ bouncer \ src \ CachedClipboard.php235

45

Silber \ Bouncer \ CachedClipboard getRolesLookup

... \ vendor \ silver \ bouncer \ src \ BaseClipboard.php57

44

Silber \ Bouncer \ BaseClipboard countMatchingRoles

... \ vendor \ silver \ bouncer \ src \ BaseClipboard.php37

43

Silber \ Bouncer \ BaseClipboard checkRole

... \ vendor \ silver \ bouncer \ src \ Database \ Concerns \ HasRoles.php92

42

App \ User isAn

…\ routes \ web.php379

41

App \ Providers \ RouteServiceProvider {关闭}

... \ vendor \ laravel \ framework \ src \ Illuminate \ Routing \ Route.php205


1 个答案:

答案 0 :(得分:0)

将权限“ create-employee ”分配给“ 雇主”,而不是“ 超级用户”角色,请尝试以下方式:< / p>

Bouncer::allow('superuser')->to('create-account');
Bouncer::allow('superuser')->to('create-employee');