Files
SpiceManagementSystem/app/Providers/Filament/UserPanelProvider.php
T
Malek TellissiandClaude Sonnet 4.6 fc4579c47d
Deploy / deploy (push) Successful in 28s
Add Nextcloud OAuth 2.0 login via laravel/socialite
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-13 01:40:46 +02:00

106 lines
4.5 KiB
PHP

<?php
namespace App\Providers\Filament;
use Filament\Navigation\NavigationGroup;
use Filament\View\PanelsRenderHook;
use Illuminate\Support\HtmlString;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Pages;
use Filament\Panel;
use Filament\PanelProvider;
use Filament\Support\Colors\Color;
use Filament\Widgets;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;
use App\Filament\Widgets\StatsOverview;
use App\Filament\User\Resources\ProductSaleResource\Widgets\SalesChart;
use App\Filament\User\Resources\SpiceResource\Widgets\SpiceChart;
use Leandrocfe\FilamentApexCharts\FilamentApexChartsPlugin;
class UserPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->id('user')
->default()
->path('dashboard')
->font('Jost')
->login()
->colors([
'primary' => '#33ccff'
])
->favicon(url:'../images/favicon.png')
->navigationGroups([
NavigationGroup::make('Lager'),
NavigationGroup::make('Waren Ein/Ausgang'),
NavigationGroup::make('Ressourcen'),
NavigationGroup::make('CRM'),
])
->renderHook(
PanelsRenderHook::AUTH_LOGIN_FORM_AFTER,
fn () => new HtmlString(
'<div class="mt-4">'
. '<div class="relative flex items-center gap-3 py-1">'
. '<div class="h-px flex-1 bg-gray-200 dark:bg-gray-700"></div>'
. '<span class="text-xs text-gray-400 dark:text-gray-500">oder</span>'
. '<div class="h-px flex-1 bg-gray-200 dark:bg-gray-700"></div>'
. '</div>'
. '<a href="' . route('auth.nextcloud') . '" class="mt-3 flex w-full items-center justify-center gap-2 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700">'
. '<svg class="h-4 w-4" viewBox="0 0 50 50" fill="currentColor"><path d="M25 2C12.3 2 2 12.3 2 25s10.3 23 23 23 23-10.3 23-23S37.7 2 25 2zm0 7a7 7 0 110 14 7 7 0 010-14zm0 32c-5.8 0-10.9-2.9-14-7.3.1-4.6 9.3-7.2 14-7.2s13.9 2.5 14 7.2C35.9 38.1 30.8 41 25 41z"/></svg>'
. 'Mit Nextcloud anmelden'
. '</a>'
. '</div>'
)
)
->renderHook(
PanelsRenderHook::SIDEBAR_FOOTER,
fn () => new HtmlString(
'<div class="px-6 pb-4 font-mono text-[10px] text-gray-400 dark:text-gray-600">'
. 'Build ' . substr(config('app.git_commit', 'dev'), 0, 10)
. '</div>'
)
)
->discoverResources(in: app_path('Filament/User/Resources'), for: 'App\\Filament\\User\\Resources')
->discoverPages(in: app_path('Filament/User/Pages'), for: 'App\\Filament\\User\\Pages')
->pages([
Pages\Dashboard::class,
])
->plugins([
FilamentApexChartsPlugin::make()
])
->discoverWidgets(in: app_path('Filament/User/Widgets'), for: 'App\\Filament\\User\\Widgets')
->widgets([
StatsOverview::class,
SalesChart::class,
SpiceChart::class,
])
->middleware([
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
AuthenticateSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
DisableBladeIconComponents::class,
DispatchServingFilamentEvent::class,
])
->authMiddleware([
Authenticate::class,
])
->resources([
config('filament-logger.activity_resource')
]);
}
}