我正在使用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
答案 0 :(得分:0)
将权限“ create-employee ”分配给“ 雇主”,而不是“ 超级用户”角色,请尝试以下方式:< / p>
Bouncer::allow('superuser')->to('create-account');
Bouncer::allow('superuser')->to('create-employee');