Files
pyqcrm/lib/DB/UserManager.py
2024-12-20 14:11:34 +01:00

80 lines
2.2 KiB
Python

from .DbManager import DbManager
from ..PyqcrmFlags import PyqcrmFlags
from ..Vermasseln import Vermasseln
from PySide6.QtMultimedia import QMediaPlayer, QAudioOutput
from .UserDAO import UserDAO
from PySide6.QtCore import Slot, QObject, Signal, QUrl
class UserManager(QObject):
loginOkay = Signal()
noDbConnection = Signal(str)
def __init__(self, user_config = None, role = None):
super().__init__()
self.__con = DbManager().getConnection()
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])
else:
player = QMediaPlayer(self)
audioOutput = QAudioOutput(self)
player.setAudioOutput(audioOutput)
player.setSource(QUrl("qrc:/sounds/fail2c.ogg"))
audioOutput.setVolume(150)
player.play()
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()