Files
pyqcrm/lib/DB/UserManager.py
2025-04-21 23:45:33 +02:00

67 lines
1.9 KiB
Python

from PySide6.QtCore import Slot, QObject, Signal
from lib.domain.BaseModel import database
from .UserDAO import UserDAO
from ..PyqcrmFlags import PyqcrmFlags
from ..Vermasseln import Vermasseln
class UserManager(QObject):
loginOkay = Signal()
noDbConnection = Signal(str)
def __init__(self, user_config=None, role=None):
super().__init__()
self.__con = database.connection()
self.__user_dao = UserDAO()
self.__user_dao.noDbConnection.connect(self.noDbConnection)
if self.__con:
self.__cur = self.__con.cursor()
if user_config and role:
self.__username = user_config["PYQCRM_USER"]
self.__password = user_config["PYQCRM_USER_PASS"]
self.__info = user_config["PYQCRM_USER_INFO"]
self.__role = role if role == PyqcrmFlags.ADMIN else 0
def createUser(self):
self.__hashPassword()
user_created = self.__user_dao.createUser(self.__username, self.__password, self.__info, self.__role)
return user_created
def __hashPassword(self):
self.__password = Vermasseln.userPasswordHash(self.__password)
def checkAdmin(self):
self.__cur.callproc("checkAdmin")
result = self.__cur.fetchall()
return result
def getUser(self):
pass
def getUsers(self):
pass
def delUser(self):
pass
def updateUser(self):
pass
def disableUser(self):
pass
@Slot(str, str)
def login(self, username, password):
user = self.__user_dao.getUser(username)
if user:
self.__checkPassword(password, user[2])
def __checkPassword(self, password, hash_password):
pw_list = hash_password.split("$")
hash_pw = Vermasseln.userPasswordHash(password, pw_list[0])
if hash_password == hash_pw:
self.loginOkay.emit()