Files
elixforms-web-pages/.artifacts/php_implementation_plan_recupero.md
T

3.4 KiB

Porting "recupero-proposta-cct-da-contratti" in PHP

Obiettivo

Convertire la pagina custom recupero-proposta-cct-da-contratti in PHP, mantenendo la stessa logica di funzionamento della versione React/TypeScript.

Architettura e Sicurezza

La pagina originale React esegue una chiamata client-side fetch ad un web service esterno (http://localhost:8000/contratti/cerca) utilizzando credenziali Basic Auth ed una API Key custom. Poiché in PHP eseguiamo il rendering server-side, esporre le credenziali nel codice JavaScript inviato al browser è una vulnerabilità di sicurezza.

Soluzione Proposta: PHP Proxy Script

Proponiamo la creazione di un file search-contratti.php locale alla pagina che:

  1. Riceve in GET il parametro di ricerca term ed il codice fiscale dell'utente cod_fis.
  2. Esegue una chiamata cURL server-to-server verso il WS reale usando le credenziali memorizzate in sicurezza in config.json.
  3. Restituisce il JSON dei contratti trovati al client.

Il componente client-side eseguirà la fetch locale verso questo file search-contratti.php ed implementerà un dropdown di autocompletamento in JavaScript nativo (Vanilla JS) per mantenere le stesse animazioni ed interazioni della versione React (debounce, navigazione con frecce tastiera, selezione ed autocompilazione dei campi nascosti del form).

[Browser Client]
       │
       │ (fetch /term=...)
       ▼
[search-contratti.php] (Proxy locale in php/)
       │
       │ (cURL server-to-server + Basic Auth & API Key)
       ▼
[Web Service Contratti]

Proposed Changes

Componente: php/recupero-proposta-cct-da-contratti/

[NEW] config.json

Copia del file di configurazione con le credenziali API, l'endpoint del Web Service ed i mapping dei campi elixForms.

[NEW] search-contratti.php

Script PHP proxy che:

  • Valida l'input.
  • Effettua la richiesta HTTP GET al WS esterno tramite curl.
  • Passa l'header Authorization: Basic ... e X-Api-Key: ....
  • Ritorna application/json con i risultati.

[NEW] index.php

Pagina custom principale:

  • Eredita da ElixFormsComponent.
  • Legge il Codice Fiscale dell'utente tramite QueryParamHelper::getDecodedTextFromQuery.
  • Genera i campi nascosti per i dati di output (idDomanda, idRicevuta, codiceContratto, titoloContratto).
  • Rendering dell'input di ricerca ed implementazione del JavaScript nativo per l'autocompletamento (sincronizzato con il file proxy search-contratti.php).

Verification Plan

Manual Verification

  • Avviare il server PHP locale: php -S localhost:8080 nella cartella php/recupero-proposta-cct-da-contratti/.
  • Verificare che il proxy search-contratti.php?term=test&cod_fis=... risponda correttamente con i dati mock o reali del WS.
  • Verificare che digitando nel campo di ricerca "Cerca Contratto" vengano visualizzati i risultati nel menu a discesa.
  • Testare la navigazione del menu a discesa con la tastiera (Frecce Su/Giù, Enter, Esc).
  • Verificare che alla selezione di un contratto, i campi hidden vengano correttamente compilati con i valori associati (idDomanda, idRicevuta, ecc.) e venga mostrata la card riepilogativa del contratto selezionato.