Untitled
unknown
python
3 years ago
6.1 kB
4
Indexable
from PySide6.QtGui import QIcon from PySide6.QtCore import QRect, Signal from PySide6.QtWidgets import QMainWindow, QMessageBox, QLineEdit from pysqlitecipher.sqlitewrapper import SqliteCipher from os.path import exists from ui_log_in import Ui_MainWindow class LogInWindow(QMainWindow): logged_in = Signal() def __init__(self): super(LogInWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setFixedWidth(320) self.setFixedHeight(360) self.ui.editPassword1.setFocus() self.dlg_password_len = QMessageBox(self) self.dlg_password_len.setWindowTitle("Password vault") self.dlg_password_len.setText( "The master password must contain at least 8 characters." ) self.dlg_password_len.setStandardButtons(QMessageBox.Ok) self.dlg_password_len.setIcon(QMessageBox.Warning) self.dlg_passwords_not_match = QMessageBox(self) self.dlg_passwords_not_match.setWindowTitle("Password vault") self.dlg_passwords_not_match.setText("Master passwords do not match.") self.dlg_passwords_not_match.setStandardButtons(QMessageBox.Ok) self.dlg_passwords_not_match.setIcon(QMessageBox.Warning) self.dlg_empty_password = QMessageBox(self) self.dlg_empty_password.setWindowTitle("Password vault") self.dlg_empty_password.setText("Make sure to fill both boxes.") self.dlg_empty_password.setStandardButtons(QMessageBox.Ok) self.dlg_empty_password.setIcon(QMessageBox.Warning) self.dlg_password_created = QMessageBox(self) self.dlg_password_created.setWindowTitle("Password vault") self.dlg_password_created.setText( "Your master password has been created successfully." ) self.dlg_password_created.setStandardButtons(QMessageBox.Ok) self.dlg_password_created.setIcon(QMessageBox.Information) self.dlg_incorrect_password = QMessageBox(self) self.dlg_incorrect_password.setWindowTitle("Password vault") self.dlg_incorrect_password.setText( "Incorrect master password. Please try again." ) self.dlg_incorrect_password.setStandardButtons(QMessageBox.Ok) self.dlg_incorrect_password.setIcon(QMessageBox.Warning) self.ui.buttonSubmit.clicked.connect(self.log_in) self.ui.editPassword1.returnPressed.connect(self.log_in) self.ui.buttonPasswordToggle1.setCheckable(True) self.ui.buttonPasswordToggle1.clicked.connect(self.password_toggle1) self.ui.editPassword2.returnPressed.connect(self.log_in) self.ui.buttonPasswordToggle2.setCheckable(True) self.ui.buttonPasswordToggle2.clicked.connect(self.password_toggle2) if exists("Password_Vault.db"): self.setFixedHeight(220) self.ui.labelHeading.setText("Enter Master Password") self.ui.labelSubHeading.hide() self.ui.labelPassword1.hide() self.ui.framePassword1.setGeometry(QRect(35, 90, 250, 31)) self.ui.labelPassword1Sub.hide() self.ui.labelPassword2.hide() self.ui.editPassword2.hide() self.ui.buttonSubmit.setText("Unlock") self.ui.buttonSubmit.setGeometry(QRect(35, 140, 250, 25)) def log_in(self): if exists("Password_Vault.db"): self.enter_master_password() else: self.create_master_password() def password_toggle1(self, checked): if checked: self.ui.editPassword1.setEchoMode(QLineEdit.EchoMode.Normal) self.ui.buttonPasswordToggle1.setIcon(QIcon("Icons/eye.svg")) else: self.ui.editPassword1.setEchoMode(QLineEdit.EchoMode.Password) self.ui.buttonPasswordToggle1.setIcon( QIcon("Icons/eye-crossed.svg") ) def password_toggle2(self, checked): if checked: self.ui.editPassword2.setEchoMode(QLineEdit.EchoMode.Normal) self.ui.buttonPasswordToggle2.setIcon(QIcon("Icons/eye.svg")) else: self.ui.editPassword2.setEchoMode(QLineEdit.EchoMode.Password) self.ui.buttonPasswordToggle2.setIcon( QIcon("Icons/eye-crossed.svg") ) def create_master_password(self): if ( len(self.ui.editPassword1.text()) == 0 or len(self.ui.editPassword2.text()) == 0 ): self.dlg_empty_password.exec() elif self.ui.editPassword1.text() != self.ui.editPassword2.text(): self.dlg_passwords_not_match.exec() elif ( len(self.ui.editPassword1.text()) < 8 and len(self.ui.editPassword1.text()) < 8 ): self.dlg_password_len.exec() else: self.db = self.get_db() self.dlg_password_created.exec() if not self.db.checkTableExist("Password"): self.create_passwords_table() self.logged_in.emit() def enter_master_password(self): if len(self.ui.editPassword1.text()) == 0: self.dlg_incorrect_password.exec() else: try: self.db = self.get_db() self.logged_in.emit() except RuntimeError: self.dlg_incorrect_password.exec() def get_db(self): return SqliteCipher( dataBasePath="Password_Vault.db", checkSameThread=False, password=(self.ui.editPassword1.text()), ) def create_passwords_table(self): self.db.createTable( "Password", [ ["title", "TEXT"], ["login", "TEXT"], ["password", "TEXT"], ["url", "TEXT"], ["compromised", "INT"], ], makeSecure=True, commit=True, )
Editor is loading...