Я использую JosephSilber / bouncer Пакет Laravel
Когда я захожу как супер-админ, у которого есть все способности '*', и я запускаю
dump(Auth::user()->getAbilities())
На глобальном уровне (где создается этот пользователь) я получаю это:
и на уровне арендатора я запускаю ту же команду, когда яя вошел в систему с тем же пользователем: и я получаю пустую коллекцию
Это похоже на то, что она не выглядит в правильной таблице БД
и что еще интереснее, когда я делаю то же самое с ролями => Auth::user()->getRoles()
Он правильно получает роли на обоих уровнях (глобальном и арендаторе)
Может быть, у кого-то больше опыта работы с Bouncer? Почему это не работает так же, как и с ролями.
Обновление:
Я наконец нашел причину и причину этой проблемы в своем приложении. Поскольку у меня мультитенантное приложение, и мой пользователь сохранен в другой БД, Bouncer ищет возможности в текущей БД, но эти способности хранятся в БД, прошедшей проверку подлинности, и поэтому ничего не находит ...
Мне просто нужнопереписать этот метод:
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));
});
}
но я не знаю, как и где написать код.
Это строка, мне нужноположить туда
return Models::ability()->on($authority->getConnectionName())->where(function ($query) use ($authority, $allowed).....