Доступ к арендатору в Filament
Давайте закроем доступ к арендатору. Даже если подставить чужой сегмент в адрес, панель должна отказать. Проверим на /admin/acme, куда входят только участники Acme.
На User.php добавим
метод canAccessTenant.
Он сравнит переданную
команду со списком
связей работника:
<?php
namespace App\Models;
use Filament\Models\Contracts\HasTenants;
use Filament\Panel;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements HasTenants
{
public function canAccessTenant(Model $tenant): bool
{
return $this->teams()
->whereKey($tenant->getKey())
->exists();
}
}
?>
При ложном результате Filament вернёт ошибку доступа вместо чужих данных. Свои команды по-прежнему открываются как обычно.
Не пускайте работника в чужую команду по прямой ссылке.