Closed lecault closed 1 year ago
Dans l'idéal il faudrait appliquer la regex sur les noms
Ce n'est pas un bug, pour moi c'est Evolution.
A corriger tout de même en reprenant la regex des nom de XML
Correction, c'est bien un bug car le nom de l'org provenant du header est en LATIN1 alors que le nom de la regex pour les nom de répertoire / nom de fichier d'une application se base sur de l'UTF-8. Donc les caractères type é
latin1 donné é
non attendu et donc remplacé par _
.
Cela s'explique car le python en lisant l'org du header, récupère cette syntaxe pour "Mégalis Br€tagne!" :
'Mégalis Brâ\x82¬tagne!'
En adaptant la lecture du header avec :
org.encode('latin1').decode('utf-8')
On obtient une valeur cohérente qui une fois passée dans la regex fournira :
Megalis_Brtagne
Donc pour Megalis Bretagne on obtient :
Megalis_Bretagne
j'ai fait un push mais au final c'est sur une autre branche car j'ai vu que ca provoqué un problème de start du service
Je viens d'appliquer la regex pour les nom d'organisation.
Cette modification a 2 points importants :
Cette modification entraîne la suppression des XML existants réalisés dans vos tests.
Dans une version récente de la console georchestra (e.g sur gis.jdev.fr), la console ne permet pas la saisie de caractères spéciaux pour un organisme. Mégalis Bretagne
n'est pas un nom autorisé dans cette version.
ça n'a pas l'air de marcher :
J'ai remarqué que les organismes était en minuscule ce qui me va.
D'ailleurs je n'avais pas fait attention que j'ai le même comportement au niveau des infos de connexion :
Idem pour moi :
2. Dans une version récente de la console georchestra (e.g sur gis.jdev.fr), la console ne permet pas la saisie de caractères spéciaux pour un organisme.
Mégalis Bretagne
n'est pas un nom autorisé dans cette version.
Ah tiens du coup quand GéoBretagne aura migré sur le nouveau GeOrchestra on aura plus le soucis ?
moi j'ai bien un e à la place d'un é
...
je refais le test ...
En local,
J'ai un nom d'organisme Mégalis Bretagne qui s'affiche correctement.
Voici le répertoire créé :
Petit résumé des analyses réalisées avec @spelhate, @lecault sur la plateforme de test GEOB.
dc:publisher
). Ce nom est également utilisé pour afficher l'organisme d'appartenant de l'utilisateur connecté à geOrchestra.Pour ce besoin, et dans le code récupéré par JDev, c'est le sec-org
qui est récupéré du du header (security-proxy)
Il s'avère cependant que la récupération du nom de l'organisme ne se fait pas correctement sur l'instance studio de GeoBretagne. Les caractères accentués sont remplacés par un tiret base _
(Mégalis
devient M_galis
).
Ce problème ne provient pas du code rajouté par les travaux en cours (JDev / Megalis) mais semble bien lié à la récupération des infos entre la version geOrchestra de GéoBretagne et la lecture du header par Flask :
from flask import request
orgname = request.headers.get("sec-org")
# lira M_galis et non Mégalis
Pour s'assurer que le problème ne vient pas du header, des logs sont maintenant disponibles dans le fichier gunicorn-error.log
(depuis le 16/06/2023) pour voir le header complet transmis au service (Python).
Sur geOrchestra version 21 utilisée par JDev pour les tests du studio pendant les développements de l'équipe JDev (https://gis.jdev.fr/mviewerstudio), il s'avère que les accents ne sont pas admis avec le sec-org au sein de la console d'administration des utilisateurs. Ce problème ne peut donc pas survenir dans cette version.
Le point précédent montre qu'il n'est cependant pas optimal d'utiliser le sec-org
et qu'il est préférable d'utiliser le sec-orgname
disponible dans les dernières versions geOrchestra (ce sera donc disponible sur GeoBretagne après migration prévue fin 2023).
L'explication est que le sec-org
est un nom court, et qu'il permettra moins facilement de lire le nom de l'organisme dans le fichier XML ou dans le nom de répertoire regroupant les applications par organisme. Le sec-orgname
permettra aussi un meilleur référencement (puisque plus complet) dans le cas où une application XML serait grand public et recherchable dans un moteur de recherche.
Exemple en georchestra 21 :
SEC-ORGNAME (Nom complet) : Mégalis Bretagne
SEC-ORG (Nom court) : megalis
Exemple en georchestra 21 :
Informations fournies dans le header (on peut lire Mégalis Bretagne dans sec-orgname
) :
'Sec-Roles': 'ROLE_USER', 'Sec-Org': 'Megalis1', 'Sec-Email': 'test@megalis.fr', 'Sec-Lastname': 'megalis', 'Sec-Firstname': 'test', 'Sec-Username': 'tmegalis', 'Sec-Orgname': 'Mégalis Bretagne',
Informations fournies par le backend mviewerstudio :
a noter que le caractère
é
et interprété en unicode\u00e9
permettant une manipulation commune entre le frontend et le backend sans problématique d'encodage
{
"first_name": "test",
"last_name": "megalis",
"normalize_name": "megalis_bretagne",
"organisation": {
"legal_name": "M\u00e9galis Bretagne"
},
"roles": [
"ROLE_USER"
],
"user_name": "tmegalis"
}
Pour apporter une réponse au besoin initial et un correctif au problème constaté avec le sec-org
, nous avons modifié le code Python pour utiliser le sec-orgname
à terme compatible avec la version suivante de GeoBretagne et les dernières versions geOrchestra préconisées par la communauté.
Cette solution est fonctionnelle et correspond aux attente à partir de ce commit :
https://github.com/jdev-org/mviewerstudio/commit/c4db87f34210ffc11807a6e082ccb4a085a49579
A noter qu'ne vue de la migration GéoBretagne , une modification des noms des organismes est à prévoir pour les organismes avec des noms contenant des caractères accentués ou spéciaux (voir les règles de la console pour plus de détails).
Ok je clos
Dans l'idéal il faudrait appliquer la regex sur les noms d'applications sur les répertoires des organismes.
Par exemple l'organisme Mégalis Bretagne créé un dossier M_galis_Bretagne au lieu de Megalis_Bretagne.
Illustration :