РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗ppflSpTnSc 164 of 250 menu
◀ ▶

Одна команда на пользователя в 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); } } ?>

Покажите работнику только записи его команды, без переключателя в шапке.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить