19/04/22 - 23h30

master
ChérifBALDE 2022-04-19 23:11:51 +02:00 committed by cherif
parent 64822da525
commit d41614d78a
1 changed files with 114 additions and 3 deletions

View File

@ -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"