From d41614d78aaff31d12581b5ee20dd47a98587a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ch=C3=A9rifBALDE?= Date: Tue, 19 Apr 2022 23:11:51 +0200 Subject: [PATCH] 19/04/22 - 23h30 --- ela_user_account.py | 117 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 3 deletions(-) diff --git a/ela_user_account.py b/ela_user_account.py index cd23464..39bba37 100644 --- a/ela_user_account.py +++ b/ela_user_account.py @@ -210,8 +210,6 @@ def desable_user_objectif(diction): - - def add_update_user_objectif(diction): try: client = MongoClient(CONNECTION_STRING) @@ -1100,7 +1098,6 @@ Cette fonction retourne l'historique de recherche d'un utilisateur ''' - def get_user_recherche_history(diction): try: # Dictionnaire des champs utilisables @@ -1181,3 +1178,117 @@ def get_user_recherche_history(diction): exc_type, exc_obj, exc_tb = sys.exc_info() mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno)) return False, "Impossible de recuperer l'historique de recherche" + + +''' +Cette Function permet de gerer la reunitialisation du passwd +à la demande de l'utilisateur : exemple : mot de passe oublié. + +que fait elle exactement : + +0 - Desactivation de toutes les entrée dans la table : user_token pour le mail, s'il est valide +1 - elle crée une entrée dans la table : user_token + - recid + - email +3 - envoyer un mail au user (si valide) avec le token : /ResetUserPwd/:tokenx +''' +def InitUserPasswd(diction): + try: + # Dictionnaire des champs utilisables + + ''' + # Verification que les champs reçus dans l'API sont bien dans la liste des champs autorisés + # Cela evite le cas ou une entité tierce ajouter les valeurs inconnu dans l'API + # Ici on doit mettre tous les champs possible (obligatoire ou non) de la BDD dans la liste + # field_list. + ''' + field_list = ['email'] + incom_keys = diction.keys() + for val in incom_keys: + if val not in field_list: + mycommon.myprint( + str(inspect.stack()[0][3]) + " Le champ '" + val + "' n'est pas autorisé, opération annulée") + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur" + + ''' + Une fois qu'on a controlé que toutes les clés mise dans l'API sont correcte. etape precedente, + On controle que les champs obligatoires sont presents dans la liste + ''' + field_list_obligatoire = ['email'] + for val in field_list_obligatoire: + if val not in diction: + mycommon.myprint(str(inspect.stack()[0][3]) + " La valeur '" + val + "' n'est pas presente dans liste ") + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur" + + + ''' + Verification de la valider de l'email + ''' + myemail = "" + myquery = {} + if ("email" in diction.keys()): + if diction['source']: + myemail = diction['source'] + myquery['email'] = diction['source'] + + + myquery['active'] = '1' + myquery['locked'] = '0' + + + coll_name = dbname['user_account'] + + tmp = coll_name.count_documents(myquery) + + if (tmp <= 0): + mycommon.myprint(str(inspect.stack()[0][3]) + " Aucun resultat trouvé pour " + str(myquery)) + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur" + + + RetObject = [] + local_id = 0 + retVal = coll_name.find(myquery, {"_id": 0, "valide": 0, "user_recid": 0}) + + print(" le recid = "+retVal['recid']) + + ''' + Desactivation des tocken actifs + ''' + update_field = {'valide': '0', 'date_update':str(datetime.now())} + + + coll_name_token = dbname['user_token'] + ret_val_user_rech = coll_name_token.find_one_and_update( + {'recid': retVal['recid']}, + {"$set": update_field}, + return_document=ReturnDocument.AFTER + ) + + if (ret_val_user_rech is False): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de mettre à jour la table 'user_token' " + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur " + + + ''' + Insertion du nouveau token + ''' + new_token = {} + new_token['email'] = retVal['email'] + new_token['recid'] = retVal['recid'] + new_token['date_update'] = str(datetime.now()) + new_token['valide'] = '1' + + + ret_val_tmp = coll_name_token.insert_one(new_token) + if (ret_val_tmp is False): + mycommon.myprint(str(inspect.stack()[0][3]) + " - Impossible de créer le nouveau toek") + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur " + +send email a faire + + return True, "RetObject" + + except Exception as e: + exc_type, exc_obj, exc_tb = sys.exc_info() + mycommon.myprint(str(inspect.stack()[0][3]) + " -" + str(e) + " - Line : " + str(exc_tb.tb_lineno)) + return False, "Impossible de reinitialiser le mot de passe de l'utiilisateur"