Noethys / Connecthys

Le portail internet de Noethys
9 stars 10 forks source link

Hashage nom, prénom, etc #19

Open maximus49000 opened 5 years ago

maximus49000 commented 5 years ago

Bonjour Ivan et la communauté GIT.

J'ai commencé à travailler sur une nouvelle fonctionnalité (la possibilité pour un parent de s'inscrire directement depuis la plateforme). J'ai réussi à faire l'interface sans aucun problème, et la je suis au niveau du traitement de l'information. J'aimerai pouvoir dans la base de donnée tester le nom et prénom entré histoire de voir si la personne n'existe pas déjà. J'ai donc essayé avec :

existing_user = models.Individu.query.filter_by(nom=nomS, prenom=prenomS).first()

Après vérification j'ai l'impression que les noms et prénoms sont Hashé et donc ma méthode de comparaison ne retourne qu'un Individu avec la valeur None...

Pourrais-tu m'en dire un petit peu plus sur ce que utilise?

Bonne soirée.

Maxime

Noethys commented 5 years ago

Bonjour,

Les données personnelles sont chiffrées. Il faut par exemple utiliser ceci :

valeur = utils.CallFonction("DecrypteChaine", valeur)
valeur = utils.CallFonction("CrypteChaine", valeur)

Ivan

maximus49000 commented 5 years ago

En effet, j'ai donc essayé cela :

nomS = utils.CallFonction("CrypteChaine",form.nom.data) prenomS = utils.CallFonction("CrypteChaine",form.prenom.data) existing_user = models.Individu.query.filter_by(nom=nomS, prenom=prenomS).first()

Mais cela donne le même résultat. Suis-je donc obligé d'utiliser le query.all(), et parcourir toute les données manuellement? (deux hashage pas au même moment ne donne pas le même résultat, et donc comparer les hash, ça ne semble pas marcher, et on ne peu pas dire directement dans la fonction filter.by() :

utils.CallFonction("DecrypteChaine", nom) = nomS

Merci en tout cas pour ta réponse.

Maxime

Noethys commented 5 years ago

En effet, tu n'auras peut-être pas d'autre choix que de déchiffrer toute la liste.

Ivan

maximus49000 commented 5 years ago

C'est bien ce que j'avais peur... Bon et bien c'est pas grave on va le faire (histoire d'éviter au maximum qu'un même individu s'inscrive deux fois sur le portail). De plus je voudrait qu'il fonctionne toute les demandes de connecthys avec une validation par noethys. Il va peut être falloir que je crée une table dans la base de données du coup je pense... ^^"

maximus49000 commented 5 years ago

L'interface d'inscription est maintenant terminé et l'interface fonctionnel.

J'aimerai maintenant m'attaquer au lien avec Noethys. Pourrais-tu m'expliquer la procédure pour les fonctionnalités de type : changement de mot de passe, demande d'ajout à une activité, demande d'inscription, ... ? En gros, par ou passe-tu pour que dans Noethys, il y ai une demande d'ajouté?

Autre infos. Si je commit, tu peu voir mes modifications, ou alors il faut un process spécifique?

Merci d'avance !

Noethys commented 5 years ago

Bonjour,

Je ne suis pas sûr d'avoir bien compris ta question.

Dans Connecthys, tu dois juste créer un enregistrement dans la table "actions" (tout est dans le fichier views.py). Noethys se chargera du traitement des demandes.

Ivan

Noethys commented 5 years ago

Tu peux faire un commit sur ton fork. Je regarderai les modifications.

Ivan

maximus49000 commented 5 years ago

EN gros j’essaye que la demande de création d'utilisateur soit comme une demande d’ajout de réservation, et j"en passe. C'est à dire que le nouvel utilisateur fait une demande dans Connecthys, il renseigne toute ses informations, et dès qu'il valide, il doit attendre que l'administrateur valide sa demande, et ensuite il peut accéder à Connecthys. L'administrateur aura sa demande qui sera affiché dans noethys affiché avec les autres demandes de modification de mot de passe, d'ajout de réervation, et j'en passe.Et enfin dès sa validation, un mail confirmant l'accès au pourtail famille sera envoyé à l'utilisateur !

Noethys commented 5 years ago

Ok j'ai compris. Il y a 2 étapes :

  1. Dans Connecthys c'est assez simple : Enregistrer la demande dans la table Actions. Voir par exemple ici : https://github.com/Noethys/Connecthys/blob/master/connecthys/application/views.py#L1338. Il suffit de stocker tous les paramètres dans le champ Paramètres.

  2. Dans Noethys , c'est plus compliqué : Traiter la demande dans la fenêtre DLG_Portail_saisie_demande.py. Il faut regarder comment les autres demandes sont y traitées.

Ivan

maximus49000 commented 5 years ago

Merci bien.

Le problème pour la première étape dans Connecthys est que je n'ai ni UserID et IDFamille pour le moment (c'est justement ce que je veux créer dans Noethys). C'est obligatoire de le spécifier? De plus, j'ai plusieurs paramètres (nom, prénom, adresse, et j'en passe). Dans une idée d'unification du code, comment traite tu cela quand tu as plusieurs paramètres à faire passer dans la fonction (si tu as déjà eu ce cas de plusieurs paramètres bien sur), histoire que je ne change pas la routine de développement.

Max"

Noethys commented 5 years ago

Je crois que tu pourras laisser IDfamille=None. Connecthys ne devrait pas trop t'embêter là-dessus.

Pour les paramètres, de mémoire je les stocke de cette façon dans le champ Paramètres : "nom=dupond##prenom=marcel##etc...". J'avais prévu cette technique pour permettre une bonne évolutivité.

Ivan

maximus49000 commented 5 years ago

Well play Ivan ! super j'essaye ça tout de suite.

Après le plus dur ce sera d'afficher la demande dans l'interface Noethys. je pense... Tu récupère bien tout les types de demande dans Noethys ou alors tu fais un filtre sur l’intitulé de la demande? Et si oui, ou est-il situé?

maximus49000 commented 5 years ago

Re. Parmis toute ces informations, lesquels ont besoin d'être hash? et sont-elle hash aussi du côté de Noethys? En outre, j'envoi ces infos en direct ou alors je dois les Hash avant? :

password1 = PasswordField('password1', [validators.Required(), validators.Length(min=0, max=20)]) password2 = PasswordField('password2', [validators.Required(), validators.Length(min=0, max=20)]) accept = BooleanField("accept", default=False) nom = HiddenField('nom') prenom = HiddenField('prenom') date_naiss = HiddenField('date_naiss') rue_resid = HiddenField('rue_resid') cp_resid = HiddenField('cp_resid') ville_resid = HiddenField('ville_resid') tel_domicile = HiddenField('tel_domicile') tel_mobile = HiddenField('tel_mobile') mail = HiddenField('mail') identifiant = HiddenField('identifiant')

Noethys commented 5 years ago

Il n'est pas obligatoire de chiffrer les données personnelles, mais c'est fortement conseillé. Tu utilises la fonction de cryptage lors de l'enregistrement dans Connecthys, puis Noethys déchiffrera lors du traitement de la demande.

Le bug "AttributeError: 'GCDC' object has no attribute 'DrawRoundedRectangleRect'" vient sûrement du fait que tu utilises la version Phoenix de Noethys. Je viens de coder le correctif. Mais tu peux corriger ta version directement en remplaçant simplement "DrawRoundedRectangleRect" par "DrawRoundedRectangle".

Ivan

Le lun. 7 janv. 2019 à 15:28, maximus49000 notifications@github.com a écrit :

Ah et petite dernière question... J'ai cette erreur sur Noethys...

File "C:\Users\Maxime\Documents\GitHub\Noethys\noethys\Ctrl\CTRL_Portail_serveur.py", line 256, in MAJ_bouton raise e

AttributeError: 'GCDC' object has no attribute 'DrawRoundedRectangleRect'

Alors que je n'ai rien changé.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Noethys/Connecthys/issues/19#issuecomment-451951993, or mute the thread https://github.com/notifications/unsubscribe-auth/AHoJe-Sta3BDhq_Z2Vqb7dFFw-QyWKM3ks5vA1mhgaJpZM4Zygod .

maximus49000 commented 5 years ago

Super merci.

J'ai commenté les lignes qui généraient cette erreur pour temporiser et avoir la possibilité de continuer à développer, mais je vais appliquer le correctif de ce pas !

Concernant les données cryptés, je vais donc tout crypter, si Noethys décrypte tout de toute façon !

J'ai donc réussi à créer la demande de connecthys, et je la reçois bien dans Noethys avec les bonnes variables. Maintenant je m'attaque au traitement avec la création de la famille, mais je suppose que tu as déjà une fonction qui crée une famille et un utilisateur ! je vais chercher dans toute ces lignes de codes ! ;)

Merci pour ton aide en tout cas ! je reviens vers toi dès que j'ai terminé !

Noethys commented 5 years ago

Regarde dans DLG_Famille.py

Ivan

maximus49000 commented 5 years ago

Bien je vais regarder ça !

maximus49000 commented 5 years ago

Bonjour.

Je reviens vers toi : dans Noethys, j'ai réussi à créer la demande, qui s'affiche bien, et je suis à l'étape du traitement. Je ne trouve pas dans ton code l'endroit ou tu ajoute l'adresse, le numéro de téléphone, sexe, et j'en passe (en gros les informations de la personne). J'ai réussi à créer le nouvel individu qui a dons son nom et son prénom, mais je n'arrive pas dans ma requête à lui ajouter les infos perso. Voici ce que je fais pour le moment :

from Dlg import DLG_Individu from Dlg import DLG_Famille param = self.track.parametres.split('##') dictInfosNouveau = {} for item in param: parametre=item.split('=') dictInfosNouveau[parametre[0]]=parametre[1] dictInfosNouveau['IDcategorie']=1 dictInfosNouveau['titulaire']=1 print dictInfosNouveau DB = GestionDB.DB() FamilleID = DLG_Famille.CreateIDfamille(DB,dictInfosNouveau) dictInfosNouveau['IDfamille']=FamilleID dlg = DLG_Individu.Dialog(None, IDindividu=None, dictInfosNouveau=dictInfosNouveau) print(dlg) return {"etat" : True}

mes infos sont stockés dans le param,, et je les bind dans le dictInfosNouveau

Noethys commented 5 years ago

Bonjour,

1ère chose : je vois que tu split self.track.parametres directement. Ce n'est pas nécessaire car Noethys le fait déjà. Regarde la fonction Traitement_inscriptions dans ligne 1293 de DLG_Saisie_portail_demande :

   def Traitement_inscriptions(self):
        # Récupération des paramètres
        IDactivite = int(self.dict_parametres["IDactivite"])
        IDgroupe = int(self.dict_parametres["IDgroupe"])

Tu n'as donc pas besoin de dictInfosNouveau.

Pour la saisie des individus, tu peux regarder les fichiers qui commencent par DLGIndividu[...]

Ivan

maximus49000 commented 5 years ago

Bonjour Ivan.

Après moulte tentatives, j'arrive à importer une personne dans Noethys. J'ai juste un message d'erreur qui s'affiche lorsque je veux sauvegarder Individu_coord, avec la fonction Sauvegarde qui me dit que la liste de diffusion n'existe pas. De plus, lorsque je sauvegarde mon individu, la famille est créée, l'individu aussi, mais lorsque je rentre dans sa fiche famille, et que j'essaye de modifier, consulter des infos, de prime abord, je les vois, mais lorsque j'appuis sur Valider, Noethys se ferme sans message d'erreur dans la console... J'essaye de détecter d'ou viens l'erreur, mais la je galère.

Je trouve la gestion des individus plutôt dur à comprendre, et j'avoue que rien que pour enregistrer un individu ainsi que ses coordonnées, ce n'était pas des plus faciles !

Si tu as 5 minutes pour consulter mon code, sinon pas grave je continue de chercher ! ;)

Noethys commented 5 years ago

Bonsoir,

Oui, ce code est complexe. C'est lié au système de rattachement des individus. C'est une des parties les plus complexes du logiciel, mais c'est aussi une des plus puissantes car elle permet beaucoup de choses dans l'utilisation. Bon, et puis peut-être parce que c'est codé avec les pieds car je ne suis pas informaticien. Forcément, ça aide pas :)

Si tu peux faire un commit sur ton code, je regarderai ton fork sur les jours à venir. Par contre, faut pas être regardant sur les délais car je suis archi-débordé depuis la rentrée de lundi.

maximus49000 commented 5 years ago

Merci bien de ta réponse ! En effet quand ce n'est pas toi qui l'as conçu j'avoue que j'ai beaux essayé de lire et relire ton code je ne comprend pas tout mais ne t'en fait pas, c'est le problème de chaque développeurs la dessus. On a tous notre façon de développé, et tout le temps, ce que tu pense être pourtant clair, ne l'es pas pour tout le monde ! Pour le moment, je n'ai pas trouvé la solution la dessus, mais bon je ne désespère pas !

Mais sinon ton code est tout a fait bien fait avec des commentaires et tout ! c'est juste que connecthys ça va c'est pas trop complexe à reprendre en main, Noethys, tu as je ne sais combien de dossiers et sous dossier avec des dépendances, des classes etc. Mais en tout cas beau travail quand même ! ;) .

J'ai commit normalement tu peu voir mon code (qui encore une fois n'est pas parfait non plus : normalement je suis plus php / html / css / javascript mais bon pour Noethys, je me met au Python ! Ahah). En même temps, ça me plait de pouvoir proposer de l'évolution non seulement dans l'intérêt de notre association qui recherche cette possibilité d'inscription en ligne, mais aussi dans une évolution de Noethys, si cela peut bien sur aider, et peut être être implémenté dans les prochaines versions de Noethys ! ;) . Et puis au cas ou, le temps que je m'adapte au code, si tu as besoin d'aide dans le développement, n'hésite pas à demander un petit temps d'adaptation, histoire de pouvoir assimiler toute les dépendances dans le code (bien nombreuses encore une fois dans Noethys), et je pense être capable de t'aider dans ta tache ! ;) .

Bref. Regarde ça quand tu aura le temps, je continue mes recherches et je te tiens au courant si j'arrive à dépatouiller le problème !

bonne soirée à toi !

Maxime

maximus49000 commented 5 years ago

Salut Ivan !

As-Tu eu le temps de regarder mon petit commit? ;-) Merci d'avance en tout cas pour toute ces modifications que tu fais en ce moment !

Max

maximus49000 commented 5 years ago

Bonjour Ivan !

Je te relance pour cette fonctionnalité. As-tu eu le temps d'y jeter un petit coup d'oeil? ce serait super cool mais sinon c'est pas grave ne t'en fais pas !

Je recommence à développer de nouvelle fonctionnalités d'ici peu et donc ce serait pour s'assurer que j'ai pas tout cassé ! ;) .

Bonne journée à toi !

Max