43 lines
1.2 KiB
PHP
Executable File
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'));
|
|
}
|
|
}
|