Пример #1
0
 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""")    
Пример #2
0
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