Bozhidar Slaveykov 1 vuosi sitten
vanhempi
commit
db9d6ab9cd

+ 2 - 0
web/Modules/LetsEncrypt/App/Providers/LetsEncryptServiceProvider.php

@@ -4,6 +4,7 @@ namespace Modules\LetsEncrypt\App\Providers;
 
 use Illuminate\Support\Facades\Blade;
 use Illuminate\Support\ServiceProvider;
+use Modules\LetsEncrypt\Providers\Filament\AdminPanelProvider;
 
 class LetsEncryptServiceProvider extends ServiceProvider
 {
@@ -30,6 +31,7 @@ class LetsEncryptServiceProvider extends ServiceProvider
     public function register(): void
     {
         $this->app->register(RouteServiceProvider::class);
+        $this->app->register(AdminPanelProvider::class);
     }
 
     /**

+ 63 - 0
web/Modules/LetsEncrypt/Providers/Filament/AdminPanelProvider.php

@@ -0,0 +1,63 @@
+<?php
+
+namespace Modules\LetsEncrypt\Providers\Filament;
+
+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;
+
+class AdminPanelProvider extends PanelProvider
+{
+    private string $module = "LetsEncrypt";
+    public function panel(Panel $panel): Panel
+    {
+        $moduleNamespace = $this->getModuleNamespace();
+        return $panel
+            ->id('letsencrypt::admin')
+            ->path('admin/modules/letsencrypt')
+            ->colors([
+                'primary' => Color::Teal,
+            ])
+            ->discoverResources(in: module_path($this->module, 'Filament/Admin/Resources'), for: "$moduleNamespace\\Filament\\Admin\\Resources")
+            ->discoverPages(in: module_path($this->module, 'Filament/Admin/Pages'), for: "$moduleNamespace\\Filament\\Admin\\Pages")
+            ->pages([
+                Pages\Dashboard::class,
+            ])
+            ->discoverWidgets(in: module_path($this->module, 'Filament/Admin/Widgets'), for: "$moduleNamespace\\Filament\\Admin\\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,
+            ]);
+    }
+
+    protected function getModuleNamespace(): string
+    {
+        return config('modules.namespace').'\\'.$this->module;
+    }
+}

+ 3 - 2
web/Modules/LetsEncrypt/module.json

@@ -5,7 +5,8 @@
     "keywords": [],
     "priority": 0,
     "providers": [
-        "Modules\\LetsEncrypt\\App\\Providers\\LetsEncryptServiceProvider"
+        "Modules\\LetsEncrypt\\App\\Providers\\LetsEncryptServiceProvider",
+        "Modules\\LetsEncrypt\\Providers\\Filament\\AdminPanelProvider"
     ],
     "files": []
-}
+}