49 lines
1.7 KiB
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);
|
|
}
|
|
}
|