Одна команда на пользователя в Filament
Давайте оставим одну команду на пользователя. Пока человек состоит только в одной фирме, переключатель в шапке не нужен. Достаточно скрыть чужие строки на /admin/posts силами Eloquent.
На модели поста зададим
глобальную область.
Метод booted добавит
условие по team_id
из текущего работника:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected static function booted(): void
{
static::addGlobalScope('team', function (Builder $query): void {
if (auth()->check()) {
$query->where(
'team_id',
auth()->user()->team_id,
);
}
});
}
}
?>
При создании записи поле команды заполним наблюдателем, чтобы форма не спрашивала лишний идентификатор:
<?php
namespace App\Observers;
use App\Models\Post;
class PostObserver
{
public function creating(Post $post): void
{
$post->team_id = auth()->user()->team_id;
}
}
?>
Подключим наблюдатель
в AppServiceProvider.php
в методе boot:
<?php
namespace App\Providers;
use App\Models\Post;
use App\Observers\PostObserver;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Post::observe(PostObserver::class);
}
}
?>
Покажите работнику только записи его команды, без переключателя в шапке.