Files
ploi-core/app/Providers/Filament/AdminPanelProvider.php
Ralph J. Smit 51b7f28634 Style
2023-09-28 12:15:55 +02:00

95 lines
3.4 KiB
PHP

<?php
namespace App\Providers\Filament;
use Filament\Pages;
use Filament\Panel;
use Filament\Widgets;
use App\Rules\Hostname;
use Filament\PanelProvider;
use Filament\Facades\Filament;
use Filament\Support\Colors\Color;
use Filament\Forms\Components\Textarea;
use Illuminate\Support\Facades\Storage;
use Filament\Forms\Components\TextInput;
use Filament\Http\Middleware\Authenticate;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;
use Saade\FilamentLaravelLog\FilamentLaravelLogPlugin;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->colors([
'primary' => Color::Sky,
])
->brandName(fn () => setting('name'))
->brandLogo(fn () => ($logoPath = setting('logo')) ? Storage::disk('logos')->url($logoPath) : null)
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
->pages([
Pages\Dashboard::class,
])
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
->widgets([
Widgets\AccountWidget::class,
Widgets\FilamentInfoWidget::class,
])
->middleware([
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
AuthenticateSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class,
])
->authMiddleware([
Authenticate::class,
])
->viteTheme('resources/css/filament/admin/theme.css')
->plugins([
FilamentLaravelLogPlugin::make()
->navigationGroup('Settings')
->navigationSort(5)
])
->bootUsing(function (): void {
Filament::registerNavigationGroups([
'Server management',
'Site management',
'Providers',
'Documentation',
'Support',
'Settings',
]);
TextInput::macro('hostname', function () {
return $this->rule(new Hostname());
});
TextInput::configureUsing(function (TextInput $textInput) {
return $textInput->maxLength(255);
});
Textarea::configureUsing(function (Textarea $textarea) {
return $textarea->maxLength(65535);
});
});
}
}