netgescon-master/app/Http/Middleware/NetgesconLayoutMiddleware.php

49 lines
1.7 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class NetgesconLayoutMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
// Se l'utente è autenticato, imposta le variabili per i layout
if (Auth::check()) {
$user = Auth::user();
$userRole = $user->role ?? 'collaboratore'; // Default role
$config = config('netgescon.user_roles.' . $userRole, config('netgescon.user_roles.collaboratore'));
// Condividi le configurazioni con tutte le viste
View::share('userRole', $userRole);
View::share('userPermissions', $config['permissions'] ?? ['read']);
View::share('userMenus', $config['menus'] ?? []);
View::share('activeLayout', $config['layout'] ?? config('netgescon.active_layout'));
// Aggiungi info utente
View::share('currentUser', $user);
View::share('userName', $user->name);
View::share('userEmail', $user->email);
}
// Forza l'uso del layout attivo e previene l'uso di layout deprecati
$deprecatedLayouts = config('netgescon.deprecated_layouts', []);
$activeLayout = config('netgescon.active_layout', 'admin.layouts.netgescon');
View::share('forceActiveLayout', $activeLayout);
View::share('deprecatedLayouts', $deprecatedLayouts);
return $next($request);
}
}