` * (lo aggiunge resources/js/app.js ai link con data-ritorno): il percorso * della pagina di partenza con i suoi filtri, o il `da` che quella pagina * aveva già ricevuto, così si risale sempre all'origine. Elenco → scheda → * Rientra → conferma riporta all'elenco filtrato. * * Si accettano solo percorsi interni ("/territori?zona=3"): un indirizzo * completo o "//altro.sito" farebbe del parametro un rimando verso l'esterno. */ final class Ritorno { public const PARAM = 'da'; /** L'URL a cui tornare, o null se il valore non è un percorso interno valido. */ public static function valida(mixed $percorso): ?string { if (! is_string($percorso) || $percorso === '' || strlen($percorso) > 2000) { return null; } if (! str_starts_with($percorso, '/') || str_starts_with($percorso, '//') || str_contains($percorso, '\\') || preg_match('/[\x00-\x1F\x7F]/', $percorso)) { return null; } // Le richieste interne di Livewire non sono pagine. $path = (string) parse_url($percorso, PHP_URL_PATH); if ($path === '' || str_starts_with($path, '/livewire')) { return null; } return url($percorso); } /** Il ritorno indicato dalla richiesta corrente (?da=…), se valido. */ public static function daRichiesta(): ?string { return self::valida(request()->query(self::PARAM)); } }