netgescon-day0/app/Http/Controllers/Admin/FilamentBridgeController.php

43 lines
1.2 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers\Admin;
use App\Filament\Pages\Condomini\CruscottoStabile;
use App\Filament\Pages\Contabilita\CasseBancheMovimenti;
use App\Http\Controllers\Controller;
use App\Models\Stabile;
use App\Models\User;
use App\Support\StabileContext;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class FilamentBridgeController extends Controller
{
public function openStabile(Request $request, Stabile $stabile): RedirectResponse
{
$user = Auth::user();
if (! $user instanceof User) {
abort(403);
}
if (! StabileContext::setActiveStabileId($user, (int) $stabile->id)) {
abort(403);
}
$to = (string) $request->query('to', '');
// Whitelist dei target consentiti (evita open redirect / URL arbitrari)
$targets = [
'casse-banche-movimenti' => fn() => CasseBancheMovimenti::getUrl(panel: 'admin-filament'),
];
if ($to !== '' && array_key_exists($to, $targets)) {
return redirect()->to($targets[$to]());
}
// Default: entro "dentro lo stabile" sul cruscotto
return redirect()->to(CruscottoStabile::getUrl(panel: 'admin-filament'));
}
}