def loginAdmin(self): """Metodo que ingresa un usuario""" valido = self.ui.lineEdit_user.text().lstrip() valido1 = self.ui.lineEdit_pass.text().lstrip() if(len(valido) is 0 or len(valido1) is 0): self.errorMessage(u"""Revise los campos obligatorios.""") else: rutValido = controlador_login.validaRut(self.ui.lineEdit_user.text()) if(rutValido): mensaje = controlador_login.obtenerUsuario(self.ui.lineEdit_user.text(), self.ui.lineEdit_pass.text()) if mensaje is None: self.errorMessage(u"""Error inesperado, intente nuevamente.""") else: user = controlador_login.obtenerUsuarioRut(self.ui.lineEdit_user.text()) #Entra si se retorna la consulta de BD y se solicita cambiar la pass if mensaje == True and self.notificacion == True: self.close() self.main2 = cambiar_Pass(user[0].rut) self.main2.exec_() self.main = MainWindow() self.main.show() self.setVisible(False) self.notificacion = False #Entra si se retorna la consulta de BD y esta es verdadera elif mensaje == True and self.notificacion == False: self.close() self.main = MainWindow() self.main.show() self.setVisible(False) else: self.correctMessage(u"""Contraseña incorrecta""") else: self.correctMessage(u"""Usuario incorrecto""")
class Login(QtGui.QDialog): def __init__(self): super(Login, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.setWindowFlags(QtCore.Qt.WindowTitleHint) self.notificacion = False self.setSignals() self.centerWindow() self.show() def centerWindow(self): """Funcion que centra la interfaz grafica en la pantalla del usuario.""" qr = self.frameGeometry() cp = QtGui.QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft()) def setSignals(self): """Enventos de los elementos del login""" self.ui.pushButton_login.clicked.connect(self.loginAdmin) self.ui.pushButton_rememberPass.clicked.connect(self.randomPass) self.ui.lineEdit_user.editingFinished.connect(self.lineEdit_user_lostFocus) self.ui.lineEdit_user.textChanged.connect(self.lineEdit_user_changed) def lineEdit_user_changed(self,text): if(controlador_login.validaTexto(text,"rut_login")): pass else: self.ui.lineEdit_user.clear() def loginAdmin(self): """Metodo que ingresa un usuario""" valido = self.ui.lineEdit_user.text().lstrip() valido1 = self.ui.lineEdit_pass.text().lstrip() if(len(valido) is 0 or len(valido1) is 0): self.errorMessage(u"""Revise los campos obligatorios.""") else: rutValido = controlador_login.validaRut(self.ui.lineEdit_user.text()) if(rutValido): mensaje = controlador_login.obtenerUsuario(self.ui.lineEdit_user.text(), self.ui.lineEdit_pass.text()) if mensaje is None: self.errorMessage(u"""Error inesperado, intente nuevamente.""") else: user = controlador_login.obtenerUsuarioRut(self.ui.lineEdit_user.text()) #Entra si se retorna la consulta de BD y se solicita cambiar la pass if mensaje == True and self.notificacion == True: self.close() self.main2 = cambiar_Pass(user[0].rut) self.main2.exec_() self.main = MainWindow() self.main.show() self.setVisible(False) self.notificacion = False #Entra si se retorna la consulta de BD y esta es verdadera elif mensaje == True and self.notificacion == False: self.close() self.main = MainWindow() self.main.show() self.setVisible(False) else: self.correctMessage(u"""Contraseña incorrecta""") else: self.correctMessage(u"""Usuario incorrecto""") def errorMessage(self, message): """Función que despliega un mensaje de error. @param message""" QtGui.QMessageBox.warning( self, u"ERROR!", message) def correctMessage(self, message): """Función que despliega un mensaje de operacion correcta. @param message""" QtGui.QMessageBox.information( self, u"Operacion correcta", message) def correctEmailMessage(self, message): """Función que despliega un mensaje de operacion correcta (envio de email). @param message""" QtGui.QMessageBox.information( self, u"Recuperar Contraseña", message) def enviarEmail(self, clave): """ Envia un email al correo electronico con la contraseña para poder ingresar, si esta se le olvida. Se crea una contraseña aleatoria la cual se envia al correo y se almacena en la base de datos, con motivo de no tener acceso a la contraseña real del usuario. """ self.notificacion = True #Booleano para saber si se recupero contraseña o no, y pedir nueva contraseña al inciar el sistema. usuario_rut = controlador_login.obtenerUsuarioRut( self.ui.lineEdit_user.text()) destinatario = usuario_rut[0].email self.correctEmailMessage(u"Se envio su contraseña al \ncorreo electrónico: \n" + usuario_rut[0].email) user = "******" password = "******" #para las cabeceras del email remitente = "*****@*****.**" asunto = "Recuperacion contraseña" mensaje = ("Su contraseña es: " + clave) #Host y puerto SMTP de Gmail gmail = smtplib.SMTP('smtp.gmail.com', 587) #protocolo de cifrado de datos utilizado por gmail gmail.starttls() #credenciales gmail.login(user, password) #muestra la depuracion de la operacion de envío (1 = true) gmail.set_debuglevel(1) header = MIMEMultipart() header['Subject'] = asunto header['From'] = remitente header['To'] = destinatario mensaje = MIMEText(mensaje, 'html') header.attach(mensaje) #Enviar email gmail.sendmail(remitente, destinatario, header.as_string()) #cerrar conexion SMTP gmail.quit() def randomPass(self): """Modifica la clave del usuario de rut = ?, con una clave aleatoria""" usuario_rut = controlador_login.obtenerUsuarioRut( self.ui.lineEdit_user.text()) rut = usuario_rut[0].rut longitud = 10 valores = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" claveTemp = "" claveTemp = claveTemp.join([choice(valores) for i in range(longitud)]) self.enviarEmail(claveTemp) crypt = c.CryptoRAF() clave_encriptada = crypt.encrypt(claveTemp,"hjjdhjfsdf987f3k4j54hj345kjh24k4jbfiyf94i3h9") controlador_login.modificarClaveUsuario(clave_encriptada, rut) def lineEdit_user_lostFocus(self): largo_rut = len(self.ui.lineEdit_user.text()) if(self.ui.lineEdit_user.text().find("-") != -1): valido = controlador_login.validaRut(self.ui.lineEdit_user.text()) else: valido = controlador_login.validaRutSinGuion(self.ui.lineEdit_user.text()) if(valido == True): if (largo_rut == 9 or largo_rut == 8): rut = self.ui.lineEdit_user.text() fixRut = rut[:-1] + "-" + rut[largo_rut - 1] self.ui.lineEdit_user.setText(fixRut) elif(valido == False): pass