Ich habe den Super‑Admin sauber auf einen eigenen Guard + eigenes Session‑Cookie umgestellt, damit Filament‑Login nicht mehr mit dem Frontend/Event‑Admin geteilt wird.
This commit is contained in:
22
app/Http/Middleware/UseSuperAdminSession.php
Normal file
22
app/Http/Middleware/UseSuperAdminSession.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class UseSuperAdminSession
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next): Response
|
||||||
|
{
|
||||||
|
config(['session.cookie' => 'super_admin_session']);
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ use App\Filament\Widgets\PlatformStatsWidget;
|
|||||||
use App\Filament\Widgets\RevenueTrendWidget;
|
use App\Filament\Widgets\RevenueTrendWidget;
|
||||||
use App\Filament\Widgets\TopTenantsByRevenue;
|
use App\Filament\Widgets\TopTenantsByRevenue;
|
||||||
use App\Filament\Widgets\TopTenantsByUploads;
|
use App\Filament\Widgets\TopTenantsByUploads;
|
||||||
|
use App\Http\Middleware\UseSuperAdminSession;
|
||||||
use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin;
|
use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin;
|
||||||
use Filament\Http\Middleware\Authenticate;
|
use Filament\Http\Middleware\Authenticate;
|
||||||
use Filament\Http\Middleware\DisableBladeIconComponents;
|
use Filament\Http\Middleware\DisableBladeIconComponents;
|
||||||
@@ -18,8 +19,8 @@ use Filament\Http\Middleware\DispatchServingFilamentEvent;
|
|||||||
use Filament\Pages;
|
use Filament\Pages;
|
||||||
use Filament\Panel;
|
use Filament\Panel;
|
||||||
use Filament\PanelProvider;
|
use Filament\PanelProvider;
|
||||||
use Filament\Support\Icons\Heroicon;
|
|
||||||
use Filament\Support\Colors\Color;
|
use Filament\Support\Colors\Color;
|
||||||
|
use Filament\Support\Icons\Heroicon;
|
||||||
use Filament\Widgets;
|
use Filament\Widgets;
|
||||||
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
||||||
use Illuminate\Cookie\Middleware\EncryptCookies;
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
||||||
@@ -72,6 +73,7 @@ class SuperAdminPanelProvider extends PanelProvider
|
|||||||
])
|
])
|
||||||
->middleware([
|
->middleware([
|
||||||
EncryptCookies::class,
|
EncryptCookies::class,
|
||||||
|
UseSuperAdminSession::class,
|
||||||
AddQueuedCookiesToResponse::class,
|
AddQueuedCookiesToResponse::class,
|
||||||
StartSession::class,
|
StartSession::class,
|
||||||
AuthenticateSession::class,
|
AuthenticateSession::class,
|
||||||
@@ -100,7 +102,7 @@ class SuperAdminPanelProvider extends PanelProvider
|
|||||||
Pages\Dashboard::class,
|
Pages\Dashboard::class,
|
||||||
\App\Filament\SuperAdmin\Pages\WatermarkSettingsPage::class,
|
\App\Filament\SuperAdmin\Pages\WatermarkSettingsPage::class,
|
||||||
])
|
])
|
||||||
->authGuard('web');
|
->authGuard('super_admin');
|
||||||
|
|
||||||
// SuperAdmin-Zugriff durch custom Middleware, globale Sichtbarkeit ohne Tenant-Isolation
|
// SuperAdmin-Zugriff durch custom Middleware, globale Sichtbarkeit ohne Tenant-Isolation
|
||||||
// Blog-Resources werden durch das Plugin-ServiceProvider automatisch registriert
|
// Blog-Resources werden durch das Plugin-ServiceProvider automatisch registriert
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ return [
|
|||||||
'driver' => 'session',
|
'driver' => 'session',
|
||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
],
|
],
|
||||||
|
'super_admin' => [
|
||||||
|
'driver' => 'session',
|
||||||
|
'provider' => 'users',
|
||||||
|
],
|
||||||
'api' => [
|
'api' => [
|
||||||
'driver' => 'sanctum',
|
'driver' => 'sanctum',
|
||||||
'provider' => 'users',
|
'provider' => 'users',
|
||||||
|
|||||||
24
tests/Feature/SuperAdminSessionMiddlewareTest.php
Normal file
24
tests/Feature/SuperAdminSessionMiddlewareTest.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use App\Http\Middleware\UseSuperAdminSession;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class SuperAdminSessionMiddlewareTest extends TestCase
|
||||||
|
{
|
||||||
|
public function test_middleware_sets_super_admin_session_cookie(): void
|
||||||
|
{
|
||||||
|
config(['session.cookie' => 'laravel_session']);
|
||||||
|
|
||||||
|
$middleware = new UseSuperAdminSession;
|
||||||
|
$request = Request::create('/super-admin', 'GET');
|
||||||
|
|
||||||
|
$middleware->handle($request, function () {
|
||||||
|
return response('ok');
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assertSame('super_admin_session', config('session.cookie'));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user