diff --git a/resources/views/filament/partials/tenant-scoped-notifications.blade.php b/resources/views/filament/partials/tenant-scoped-notifications.blade.php new file mode 100644 index 0000000..d350c93 --- /dev/null +++ b/resources/views/filament/partials/tenant-scoped-notifications.blade.php @@ -0,0 +1,44 @@ + + + diff --git a/src/EclipseServiceProvider.php b/src/EclipseServiceProvider.php index b9ac4f4..f2b52cb 100644 --- a/src/EclipseServiceProvider.php +++ b/src/EclipseServiceProvider.php @@ -21,7 +21,9 @@ use Eclipse\Core\Providers\HorizonServiceProvider; use Eclipse\Core\Providers\TelescopeServiceProvider; use Eclipse\Core\Services\Registry; +use Filament\Facades\Filament; use Filament\Resources\Resource; +use Filament\Support\Facades\FilamentAsset; use Filament\Tables\Columns\Column; use Illuminate\Auth\Events\Login; use Illuminate\Database\Eloquent\Model; @@ -148,6 +150,12 @@ public function boot(): void ->labels($availableLocales->pluck('native_name', 'id')->toArray()); }); + // Register tenant and user IDs in Filament script data + FilamentAsset::registerScriptData([ + 'user' => ['id' => auth()->id()], + 'tenant' => ['id' => Filament::getTenant()?->getKey()], + ]); + // Register health checks Health::checks([ OptimizedAppCheck::new(), diff --git a/src/Models/User.php b/src/Models/User.php index aa067f6..6c85afb 100644 --- a/src/Models/User.php +++ b/src/Models/User.php @@ -183,4 +183,15 @@ public function getSettings(string $settingsClass = UserSettings::class): Settin { return $settingsClass::forUser($this->id); } + + /** + * The channels the user receives notification broadcasts on. + */ + public function receivesBroadcastNotificationsOn(): string + { + $host = request()?->getHost(); + $tenantId = Site::query()->where('domain', $host)->value('id'); + + return "Eclipse.Core.Models.User.{$this->id}.tenant.{$tenantId}"; + } } diff --git a/src/Providers/AdminPanelProvider.php b/src/Providers/AdminPanelProvider.php index 991d04c..26a8643 100644 --- a/src/Providers/AdminPanelProvider.php +++ b/src/Providers/AdminPanelProvider.php @@ -219,6 +219,7 @@ public function register(): void parent::register(); FilamentView::registerRenderHook('panels::body.end', fn (): string => Blade::render("@vite('resources/js/app.js')")); + FilamentView::registerRenderHook('panels::body.end', fn (): string => view('eclipse::filament.partials.tenant-scoped-notifications')->render()); } /** diff --git a/src/Services/Registry.php b/src/Services/Registry.php index 61dada0..5070a65 100644 --- a/src/Services/Registry.php +++ b/src/Services/Registry.php @@ -32,7 +32,7 @@ public static function setSite(int|Site $site): void Context::add('site', self::getSite()->id); - setPermissionsTeamId($site->id); + setPermissionsTeamId(self::getSite()->id); } /**