summaryrefslogtreecommitdiff
path: root/app_alphajob/database/dbuser.py
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-04-20 13:17:36 +0200
committerDebulois <quentin@debulois.fr>2022-04-20 13:17:36 +0200
commit4c4f70bf6eb88a419add86e182d3080674196433 (patch)
treede407cee641f168c5ac325aa6a8b695ee04a429b /app_alphajob/database/dbuser.py
parent41243ec2137bac39225231c0834f9d611fe94728 (diff)
Mis en place de la structure orientée objet
Diffstat (limited to 'app_alphajob/database/dbuser.py')
-rw-r--r--app_alphajob/database/dbuser.py171
1 files changed, 0 insertions, 171 deletions
diff --git a/app_alphajob/database/dbuser.py b/app_alphajob/database/dbuser.py
deleted file mode 100644
index e0a62fb..0000000
--- a/app_alphajob/database/dbuser.py
+++ /dev/null
@@ -1,171 +0,0 @@
-
-
-############################################################################
-# #
-# Description: Ensemble de méthodes pour étendre dbmain #
-# afin de gérer les utilisateurs #
-# #
-############################################################################
-
-from datetime import datetime
-from passlib.hash import sha512_crypt
-# Import de dbmain
-from . import dbmain
-
-# Extension de cette classe avec dbmain
-class DbUser(dbmain.DbMain):
-
- # ****************************************************************************
- # GESTION DES UTILISATEURS
- # ****************************************************************************
- # Enregistrement d'un nouvel utilisateur
- def register_user(self, email, password, userStatus):
- # On vérifie si l'email existe deja dans la bdd
- exist = self.check_exist_email(email)
- # Si non
- if not exist:
- # Chiffrement du pass
- hash = self.crypt_pass(password)
- # Préparation de la requète
- reqAddUser = """""
- INSERT INTO
- """ + self.TABLEUSERACCOUNT + """
- (email, password, inscriptionDate, userStatus)
- VALUES
- (%s, %s, %s, %s)"""
- # Execution de la requète
- self.exec_cmd(reqAddUser,
- [email,
- hash,
- datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
- userStatus
- ]
- )
- # Retourne 1 pour réussite
- return 1
- else:
- # Retourne 0 pour échec
- return 0
-
- # Vérification de la combinaison email - pass pour authentification
- def check_user_credential(self, email, password):
- # Préparation de la requète pour récupérer les infos ou l'email est présent
- reqCheckCredential = """
- SELECT
- userId, password
- FROM
- """ + self.TABLEUSERACCOUNT + """
- WHERE
- email = %s """
- # Execution de la requète
- self.exec_cmd(reqCheckCredential, [email])
- result = self.cur.fetchone()
- # Vérifiaction de correspondance email & pass
- if result and sha512_crypt.verify(password, result[1]):
- return result[0]
-
- # Mise à jour des infos d'un utilisateur
- def update_user_infos(self, userInfos, userId, isPro, userJobs=None):
- # Préparation de la requète pour mise à jour des infos
- # J'ai préféré faire deux requètes distinctes et ne pas utiliser des valeurs
- # passées par POST (key => value) pour gérer les noms des colonnes
- # car je préfère les passer en "dur" dans mes requêtes (risque d'injection SQL%s).
- reqAddInfoClient = """
- REPLACE INTO
- """ + self.TABLEUSERINFO + """
- (lastname, firstname, phoneNumber,
- adress, zipCode, city, userId)
- VALUES
- (%s, %s, %s, %s, %s, %s, %s)"""
- reqAddInfoPro = """
- REPLACE INTO
- """ + self.TABLEUSERINFO + """
- (lastname, firstname, phoneNumber,
- adress, zipCode, city, degree,
- capability, description, userId)
- VALUES
- (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
- reqAddInfoProJobs = """
- INSERT INTO
- """ + self.TABLEUSERJOB + """
- (jobCategoryId, userId)
- VALUES
- (%s, %s)"""
- reqRemoveInfoProJobs = """
- DELETE FROM
- """ + self.tableUserJob + """
- WHERE
- jobCategoryId = %s
- AND
- userId = %s"""
- # if not isPro:
- # # Exécution de la requète
- # # https:#www.php.net/manual/fr/function.array-values.php
- # # Pour passer de "dict" a "list" -> array_values()
- # args = [i for i in userInfos]
- # args.push(userId)
- # self.exec_cmd(reqAddInfoClient, args)
- # else:
- # # https:#stackoverflow.com/questions/15986235/how-to-use-json-stringify-and-json-decode-properly
- # # Récupération des emplois dans le JSON et supression de ces derniers de la liste
- # selectedJobs = json_decode(html_entity_decode(userInfos["jobs"]))
- # unset(userInfos["jobs"])
- # # array_value -> Qu'est ce qui est présent dans 1 mais pas dans 2 %s
- # # Comparaison des jobs anciennement présent avec ceux sélectionnés, donc ajoutés.
- # jobsAdded = array_values(array_diff(selectedJobs, userJobs))
- # # Comparaison des jobs deja présent avec ceux sélectionnés, donc ajoutés.
- # jobsRemoved = array_values(array_diff(userJobs, selectedJobs))
- # # on continue classiquement avec les autres éléments
- # args = array_values(userInfos)
- # array_push(args, userId)
- # self.exec_cmd(reqAddInfoPro, args)
- # for i in jobsAdded:
- # self.exec_cmd(reqAddInfoProJobs, array(jobsAdded[i], userId))
- # for i in jobsRemoved:
- # self.exec_cmd(reqRemoveInfoProJobs, array(jobsRemoved[i], userId))
-
- # ****************************************************************************
- # GESTION DU TOKEN AUTOLOGIN
- # ****************************************************************************
- # Vérification de la combinaison email - jeton d'auto-login pour authentification
- def check_token_autologin(self, email, token):
- # Préparation de la requète pour récupérer les infos ou l'email est présent
- reqCheckToken = """
- SELECT
- userId, tokenAutoLogin
- FROM
- """ + self.TABLEUSERACCOUNT + """
- WHERE
- email = %s"""
- # Exécution de la requète
- self.exec_cmd(reqCheckToken, [email])
- result = self.cur.fetchone()
- # Vérifiaction de correspondance email & jeton d'auto-connection
- if result and result[1] == token:
- return result[0]
-
- # Mise à jour du jeton d'auto-login
- def update_token_autologin(self, email, token):
- # Préparation de la requète pour mise à jour du jeton d'auto-connection
- reqUpdateToken = """
- UPDATE
- """ + self.TABLEUSERACCOUNT + """
- SET
- tokenAutoLogin = %s
- WHERE
- email = %s"""
- # Execution de la requète
- self.exec_cmd(reqUpdateToken, [token, email])
-
- # Supression du jeton d'auto-login
- def del_token_autologin(self, email):
- # Préparation de la requète pour supression du jeton d'auto-connection
- reqDeleteToken = """
- UPDATE
- """ + self.TABLEUSERACCOUNT + """
- SET
- tokenAutoLogin = NULL
- WHERE
- email = %s"""
- # Execution de la requète
- self.exec_cmd(reqDeleteToken, [email])