feat: ramène à la vue d'où l'on vient une fois le document enregistré
Éditer une ligne depuis Dépenses ou Recettes ouvrait le document, puis relâchait sur la liste des documents : il fallait revenir à la page d'analyse et refaire ses filtres à la main pour corriger la ligne suivante. Les deux tables passent maintenant à l'éditeur la vue d'où l'on part, filtres compris, et il y ramène à ses trois sorties : enregistrement terminé, abandon, et document introuvable. Sans cette destination — depuis la liste des documents, ou un lien direct — le repli reste la liste. La destination arrive par l'URL, donc fabricable par n'importe qui : seule une page de l'application est suivie (utils/retour.js). Une URL absolue, un chemin protocol-relatif que le navigateur lirait comme un domaine, ou des contre-slashs retombent sur le repli. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
22
frontend/src/utils/retour.js
Normal file
22
frontend/src/utils/retour.js
Normal file
@@ -0,0 +1,22 @@
|
||||
// Une table d'analyse envoie vers l'editeur de document la page ou revenir une
|
||||
// fois l'enregistrement termine, filtres compris. Cette destination arrive par
|
||||
// l'URL : elle est donc fabricable par n'importe qui, et n'est suivie que si
|
||||
// elle designe une page de l'application.
|
||||
|
||||
/**
|
||||
* La destination de retour portee par une query, ou `repli` si elle manque ou
|
||||
* ne designe pas un chemin interne.
|
||||
*
|
||||
* Sont refuses tout ce qui peut sortir du site : une URL absolue
|
||||
* (`https://ailleurs`), un chemin protocol-relatif (`//ailleurs`) que le
|
||||
* navigateur traite comme un domaine, et les contre-slashs dont certains
|
||||
* navigateurs font des slashs.
|
||||
*/
|
||||
export function cheminRetour(brut, repli = '/documents') {
|
||||
const valeur = Array.isArray(brut) ? brut[0] : brut
|
||||
if (typeof valeur !== 'string' || valeur === '') return repli
|
||||
if (!valeur.startsWith('/')) return repli
|
||||
if (valeur.startsWith('//')) return repli
|
||||
if (valeur.includes('\\')) return repli
|
||||
return valeur
|
||||
}
|
||||
Reference in New Issue
Block a user