我正在使用JosephSilber/bouncer Laravel软件包
以超级管理员身份登录时,他具有所有功能“ *” 然后我跑
xattr -d com.apple.quarantine
在全局级别(创建此用户的位置),我得到了:
并且在租户级别,当我使用同一用户登录时,我运行相同的命令: 我得到一个空集合
好像没有在正确的数据库表中查找
更有趣的是,当我对角色执行相同的操作时=> dump(Auth::user()->getabilities())
它可以正确地在全局和租户这两个级别上获得角色
也许有人对保镖有更多的经验?为什么这样做不像使用角色那样工作?
更新:
我终于在我的应用中找到了引起此问题的原因和原因。因为我有一个多租户应用程序,并且我的用户保存在不同的数据库中,所以Bouncer在当前数据库上查找功能,但是这些功能存储在经过身份验证的用户数据库上,因此什么也找不到...
我只需要覆盖此方法:
Auth::user()->getRoles()
Silber\Bouncer\Database\Queries\Abilities.php
但是我不知道如何或在哪里编写代码。
这是我需要放在此处的行
public static function forauthority(Model $authority,$allowed = true)
{
return Models::ability()->where(function ($query) use ($authority,$allowed) {
$query->whereExists(static::getRoleConstraint($authority,$allowed));
$query->orWhereExists(static::getauthorityConstraint($authority,$allowed));
$query->orWhereExists(static::getEveryoneConstraint($allowed));
});
}