<?php
namespace App\Providers\Filament;
use App\Filament\App\Pages\Tenancy\EditTeamProfile;
use App\Filament\App\Pages\Tenancy\RegisterTeam;
use App\Http\Middleware\UpdateUserCurrentTeam;
use App\Models\Team;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
class AppPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('app')
->path('app')
->login()
->registration()
->passwordReset()
->emailVerification()
->profile()
->colors([
'primary' => Color::Amber,
])
->discoverResources(in: app_path('Filament/App/Resources'), for: 'App\\Filament\\App\\Resources')
->discoverPages(in: app_path('Filament/App/Pages'), for: 'App\\Filament\\App\\Pages')
->discoverWidgets(in: app_path('Filament/App/Widgets'), for: 'App\\Filament\\App\\Widgets')
->middleware([
// ... standard middleware
])
->authMiddleware([
Authenticate::class,
])
// Multi-tenancy configuration
->tenant(Team::class, ownershipRelationship: 'teams')
->tenantRegistration(RegisterTeam::class)
->tenantProfile(EditTeamProfile::class)
->tenantMiddleware([
UpdateUserCurrentTeam::class,
], isPersistent: true)
->tenantBillingProvider(new \Filament\Billing\Providers\StripeBillingProvider())
->requiresTenantSubscription(false);
}
}