none
Consultar y denegar acceso a usuario bloqueado Access RRS feed

  • Pregunta

  • Buenas tardes.

    Tengo en un programarla que ando haciendo una duda que no logro meter en camino.

    Al intentar acceder el usuario 3 veces se muestra mensaje de bloqueo de usuario y en la BB.DD se cambia el check de actvico a bloqueado.

    Hasta ahí bien todo.

    Ahora el problema esta que al entrar de nuevo si meter mal la contraseña te hace el mismo proceso pero si la metes bien te deja entrar al programa aun estando bloqueado en la BB.DD.

    Cómo tendría que hacer para poder consultar antes de abrir la aplicación si el usuario introducido está bloqueado o no independientemente de si pone bien la pass.

    Si la pone bien y está bloqueado pues mensaje Bloqueado! 

    Gracias por la ayuda.

    viernes, 28 de febrero de 2020 14:51

Todas las respuestas

  • Hola:
    Como NO pones la estructura ni el nombre de la tabla donde controlas el acceso a el programa, voy a suponer que la tabla se llama usuario y el campo donde se controla se llama situacion.

        Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click
           Dim Acceso As Boolean=lF_bControlUsuarios()
           If Acceso=False Then
                MessageBox.Show("Acceso Denegado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
           End If
        End Sub

        Private Function lF_bControlUsuarios() As Boolean
            Try
            Dim Retorno As Boolean=False
                Dim Situacion As Integer
                Using loConexion As New OleDbConnection(TU_CADENA_DE_CONEXION)
                    loConexion.Open()   ' abrir conexión
                    Dim lsQuery As String = "SELECT situacion FROM usuario WHERE cod_usuario=@CodUsuario AND password=@Password"
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@CodUsuario", txtCodUsuario.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Password", lsPassword))
                        Situacion = Convert.ToInt32(loComando.ExecuteScalar)
                    End Using
                    If Situacion=1
                       Retorno=True
                    End If  
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "lF_bControlUsuarios", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Return Retorno
        End Function

    Un saludo dsde Bilbo
    Carlos
    sábado, 29 de febrero de 2020 9:26
  • Hola:
    Como NO pones la estructura ni el nombre de la tabla donde controlas el acceso a el programa, voy a suponer que la tabla se llama usuario y el campo donde se controla se llama situacion.

        Private Sub btnXXX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXXX.Click
           Dim Acceso As Boolean=lF_bControlUsuarios()
           If Acceso=False Then
                MessageBox.Show("Acceso Denegado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
           End If
        End Sub

        Private Function lF_bControlUsuarios() As Boolean
            Try
            Dim Retorno As Boolean=False
                Dim Situacion As Integer
                Using loConexion As New OleDbConnection(TU_CADENA_DE_CONEXION)
                    loConexion.Open()   ' abrir conexión
                    Dim lsQuery As String = "SELECT situacion FROM usuario WHERE cod_usuario=@CodUsuario AND password=@Password"
                    Using loComando As New OleDbCommand(lsQuery, loConexion)
                        'añadir parametros al comando
                        loComando.Parameters.Add(New OleDbParameter("@CodUsuario", txtCodUsuario.Text))
                        loComando.Parameters.Add(New OleDbParameter("@Password", lsPassword))
                        Situacion = Convert.ToInt32(loComando.ExecuteScalar)
                    End Using
                    If Situacion=1
                       Retorno=True
                    End If  
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "lF_bControlUsuarios", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Return Retorno
        End Function

    Un saludo dsde Bilbo
    Carlos

    Perdona, con las prisas se me olvidó dejar lo que tengo hecho para el acceso de la aplicación.

    Esto es lo que tengo ahora mismo y que quisiera que verifique si está bloqueado y tenga en cuenta mayúsculas o minúsculas.

     Public Sub Access_Pass()
    
            'Conecta a la bbdd
            BD.ClassConecta.Conecta()
    
            Dim Cmd As OleDbCommand = New OleDbCommand("SELECT * FROM SC_Users_P WHERE [User]='" & Form_User_Pass.TB_User.Text & "' and [PssCon]='" & Form_User_Pass.TB_Pass.Text & "'", BD.ClassConecta.Cs)
    
            Dim Loginrd_i As OleDbDataReader = Cmd.ExecuteReader
    
            Dim Cmd_B As OleDbCommand = New OleDbCommand("SELECT User_Bloqueado FROM SC_Users_P", BD.ClassConecta.Cs)
    
            Dim Loginrd_B As OleDbDataReader = Cmd_B.ExecuteReader
    
            If Loginrd_i.Read() = True Then
    
    
                Form_User_Pass.Hide()
                    Form_User_Pass.Dispose()
                    Form_Principal.Show()
    
                    BD.ClassConecta.Desconecta()
                    Loginrd_i.Close()
                    Cmd.Dispose()
    
                Else
    
                    X = X + 1
                If X < 3 Then
                    MsgBox("Acceso incorrecto, revise sus datos por favor.", MsgBoxStyle.Critical)
                    Mod_Func_Inicio.LimpiaDatos_User_pass()
    
                    'Después de 3 intentos bloquea usuario y se cierra la plataforma 
                Else
    
                    'Muestra mensaje de bloqueo 
                    MessageBox.Show("                       USUARIO BLOQUEADO" & vbNewLine & "Por favor, pongase en contacto con el administrador", "SEGCAN CONTROL", MessageBoxButtons.OK, MessageBoxIcon.Error)
    
                    'Conecta a la bbdd
                    'BD.ClassConecta.Conecta()
    
                    'Actualiza la bbdd bloqueando al usuario que intentó 3 veces acceso fallido
                    Cmd = New OleDbCommand("UPDATE SC_Users_P SET User_Activo=0, User_Bloqueado=1 WHERE User=@User", BD.ClassConecta.Cs)
    
                    Cmd.Parameters.AddWithValue("@User", Form_User_Pass.TB_User.Text)
                    Cmd.ExecuteNonQuery()
    
                    'Desconecta bbdd
                    'BD.ClassConecta.Desconecta()
                    Loginrd_i.Close()
                    Cmd.Dispose()
                    'Pone la variable a 0 nuevamente
                    X = 0
                    Mod_Func_Inicio.LimpiaDatos_User_pass()
    
                    'Al bloquear usuario cierra la plataforma
                    End
                End If
            End If
    
        End Sub

    Gracias por la respuesta, un saludo.


    • Editado Aguila6 sábado, 29 de febrero de 2020 11:29
    sábado, 29 de febrero de 2020 11:29
  • Hola:
    > Perdona, con las prisas se me olvidó dejar lo que tengo hecho para el acceso de la aplicación <
    Pero sigues sin poner las estructuras de las tablas implicadas en el proceso.
    Sin esa informacion tienes que estar suponiendo cosas con lo que estas dando "palos de ciego"

    Un saludo desde Bilbo
    Carlos

    sábado, 29 de febrero de 2020 19:20
  • No entiendo a que te refieres con la estructura de las tablas.

    En el código que te dejé se refleja donde el usuario queda bloqueado.

    User_Activo=0, User_Bloqueado=1

    Y también los campos de datos de este.

    SELECT * FROM SC_Users_P WHERE [User]='" & Form_User_Pass.TB_User.Text & "' and [PssCon]='" & Form_User_Pass.TB_Pass.Text

    Tabla

    SC_Users_P

    Campos de datos

    Usuario: User 

    Contraseña: PssCon

    Activo: User_Activo

    Bloqueado: User_Bloqueado

    A esto te refieres?

    domingo, 1 de marzo de 2020 8:26
  • Hola:
    Con la estructura de la tabla me refiero a algo como la siguiente imagen

    Un saludo desde Bilbo
    Carlos
    domingo, 1 de marzo de 2020 11:34