Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con privilegios a usuarios

Estas en el tema de Problema con privilegios a usuarios en el foro de .NET en Foros del Web. Qué tal? Ando en un programa donde a la hora de loguear al usuario, los menustrip esten habilitados según su nivel que tenga y eso ...
  #1 (permalink)  
Antiguo 10/06/2011, 21:33
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Pregunta Problema con privilegios a usuarios

Qué tal? Ando en un programa donde a la hora de loguear al usuario, los menustrip esten habilitados según su nivel que tenga y eso va como FK en mi tabla usuarios donde idnivel y nom_nivel se describe los privilegios que tengan, en esta tabla se encuentra IdUsuario,Login,PasswordUser y Idnivel como FK (como dije hace un momento). A la vez en mi tabla niveles tengo estos campos: Idnivel, NomNivel, Mnu_insc_pacientes, Mnu_Visitas (y mas campos sobre menúes) Cuando registro un nivel pongo Idnivel: 0, NomNivel: Semi-privilegiado, Mnu_insc_pacientes: 0, Mnu_visitas: 1...Ahora, en los campos de mi tabla niveles en la parte de menues, le di un valor byte para determinar si este nivel, ejem:semiprivilegiado de Idnivel:0 tenga los menus strip activados en este caso mi mnu_pacientes estaría desactivado y mi mnu_visitas estaría activado. Tengo el problema casi resuelto pero al final donde exactamente le activo los menues dependiendo de su nivel no me lanza ni siquiera un mensaje de un posible error y simplemente corre pero sin hacer lo que le dije de activar los menues. Acá les dejo parte del código:

Código:
Dim cn As New SqlConnection(strcn)
        Dim cmd As New SqlCommand
        cn.Open()

        Try
            sql = "select usu_login,usu_pass from usuarios where usu_login=@usu_login and usu_pass=@usu_pass"

            cmd = New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@usu_login", txt_user.Text)
            cmd.Parameters.AddWithValue("@usu_pass", txt_pass.Text)

            Dim dr As SqlDataReader = cmd.ExecuteReader

            'If dr.HasRows = True Then
            '    MsgBox("1")
            'Else
            '    MsgBox("2")
            'End If
            If dr.Read = True Then
                MsgBox("Bienvenido '" & txt_user.Text & "'.")


                dr.Close()
                'prueba a partir de aca
                sql = "select idnivel from usuarios where usu_login=@usu_login"

                cmd = New SqlCommand(sql, cn)
                cmd.Parameters.AddWithValue("@usu_login", txt_user.Text)


                nivel = cmd.ExecuteScalar()
                If nivel = 3 Then

                    sql = "select * from niveles where idnivel=@idnivel"
                    cmd = New SqlCommand(sql, cn)

                    cmd.Parameters.AddWithValue("@idnivel", nivel)

                    Dim dr1 As SqlDataReader = cmd.ExecuteReader
                    dr1.Read()

                    Dim principal As New Frm_principal

                    principal.mnu_niveles.Enabled = IIf(dr1(2) = 1, True, False)
                    principal.mnu_usuario.Enabled = IIf(dr1(3) = 1, True, False)
                    principal.mnu_backup.Enabled = IIf(dr1(4) = 1, True, False)
                    principal.mnu_pacientes.Enabled = IIf(dr1(5) = 1, True, False)
                    principal.mnu_medicos.Enabled = IIf(dr1(6) = 1, True, False)
                    principal.mnu_nuevo_usario.Enabled = IIf(dr1(7) = 1, True, False)
                    principal.mnu_nueva_especialidad.Enabled = IIf(dr1(8) = 1, True, False)
                    principal.mnu_visitas.Enabled = IIf(dr1(9) = 1, True, False)
                    principal.mnu_historial.Enabled = IIf(dr1(10) = 1, True, False)
                    'Call privilegios()
                    MsgBox("Hello")
                    dr1.Close()
                End If



            Else
                MsgBox("Verifique usuario y/o contraseña")
                txt_user.Clear()
                txt_pass.Clear()
                txt_user.Focus()
            End If






        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            cn.Dispose()
        End Try
Podrán ubicarme el problema o ver que falta para que me funcione este problema? Saludos y gracias por tomarse la molestia de leer, espero sus ayudas xD...

Última edición por edbc92; 10/06/2011 a las 21:50 Razón: Falta ortográfica
  #2 (permalink)  
Antiguo 12/06/2011, 16:14
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: Problema con privilegios a usuarios

Alguien que pueda ayudarme porfa...
  #3 (permalink)  
Antiguo 13/06/2011, 17:49
Avatar de edbc92  
Fecha de Ingreso: octubre-2010
Ubicación: Lima - Los Olivos
Mensajes: 93
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: Problema con privilegios a usuarios

En fin, veo que nadie puede responderme, no tengo de idea del por qué, quizas les dio flojera leer xD...Bueno de todas maneras logré hallar mi error de tanto borrar y hacer de nuevo xD, el problema era que en mi base de datos los menues les asigne que fueran de tipo bit (1 ó 0)--Activado-desactivado relativamente...Ahora, en la parte de programación cuando hago mi pregunta de que si es que en mi base de datos el menu esta con '1' entonces que se active mi menú de caso contrario que se desactive:

'Este fue el código con el que inicié:
principal.mnu_niveles.Enabled = IIf(dr1(2) = 1, True, False)

'El problema era que a la hora de decir:dr1(2)=1 ...En mi base de datos como esta en tipo bit no me va a devolver nada, pero lo corregí asi:

principal.mnu_niveles.Enabled = IIf(dr1(2) = True, True, False)

Y con eso me solucionó, era algo simple que me 'maté' buscando el error por 4 días. Bueno la experiencia sirve xD...

Etiquetas: login, privilegios, sql2008
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.