예제 #1
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            SqlCommand cmdBuscarIdRol = new SqlCommand("SELECT idRol FROM [PISOS_PICADOS].Rol WHERE nombreRol = @nombreRol", Globals.conexionGlobal);

            cmdBuscarIdRol.Parameters.Add("@nombreRol", SqlDbType.VarChar);

            //chequeos
            if (cbRol.SelectedItem == null)
            {
                MessageBox.Show("Elija un rol", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            cmdBuscarIdRol.Parameters["@nombreRol"].Value = cbRol.SelectedItem.ToString();
            int idRol = (int)cmdBuscarIdRol.ExecuteScalar();

            frmMenu menuInstance = new frmMenu();

            menuInstance.asignarRol(idRol);
            Globals.frmMenuInstance = menuInstance;


            //verificamos si el usuario tiene un solo hotel. Si solo tiene uno, luego no lo mandamos a elegir
            SqlCommand tieneUnSoloHotel = new SqlCommand("SELECT [PISOS_PICADOS].tieneUnSoloHotel(@idUsuario)", Globals.conexionGlobal);

            tieneUnSoloHotel.Parameters.Add("@idUsuario", SqlDbType.Int);
            tieneUnSoloHotel.Parameters["@idUsuario"].Value = Globals.idUsuarioSesion;
            int unHotel = (int)tieneUnSoloHotel.ExecuteScalar();

            if (unHotel == 1)
            {
                menuInstance.Show();
            }
            else
            {
                frmElegirHotel instanciafrmElegirHotel = new frmElegirHotel(Globals.idUsuarioSesion, menuInstance);
                instanciafrmElegirHotel.Show();
            }

            noShowLogin = 1;
            this.Close();
            return;
        }
예제 #2
0
        private void buttonIniciarSesion_Click(object sender, EventArgs e)
        {
            //Usamos tres funciones de verificación. Una para ver si existe usuario, otra si la contraseña es correcta, y otra si el usuario esta habilitado o no
            //En base a estas verificaciones, se logueará o se avisará al usuario lo ocurrido
            SqlCommand verificarUsuario              = new SqlCommand("SELECT [PISOS_PICADOS].usuarioValido(@usuario)", Globals.conexionGlobal);
            SqlCommand verificarContraseña           = new SqlCommand("SELECT [PISOS_PICADOS].contrasenaValida(@usuario, @contrasena)", Globals.conexionGlobal);
            SqlCommand verificarUsuarioDeshabilitado = new SqlCommand("SELECT [PISOS_PICADOS].empleadoDeshabilitado(@usuario)", Globals.conexionGlobal);

            verificarUsuario.Parameters.Add("@usuario", SqlDbType.VarChar);
            verificarUsuario.Parameters["@usuario"].Value = textBoxUsuario.Text;

            verificarUsuarioDeshabilitado.Parameters.Add("@usuario", SqlDbType.VarChar);
            verificarUsuarioDeshabilitado.Parameters["@usuario"].Value = textBoxUsuario.Text;

            verificarContraseña.Parameters.Add("@usuario", SqlDbType.VarChar);
            verificarContraseña.Parameters.Add("@contrasena", SqlDbType.VarChar);
            verificarContraseña.Parameters["@usuario"].Value    = textBoxUsuario.Text;
            verificarContraseña.Parameters["@contrasena"].Value = textBoxContrasena.Text;

            int respuestaVerificacionUsuario = (int)verificarUsuario.ExecuteScalar();
            int respuestaVerificacionUsuarioDeshabilitado = (int)verificarUsuarioDeshabilitado.ExecuteScalar();
            int respuestaVerificacionContraseña           = (int)verificarContraseña.ExecuteScalar();

            if (respuestaVerificacionUsuario == 0)
            {
                MessageBox.Show("El usuario no existe.", "Error");
            }

            //Verificamos. Si todos los datos están bien y si el usuario está habilitado loguea
            if (respuestaVerificacionUsuario == 1 && respuestaVerificacionContraseña == 1 && respuestaVerificacionUsuarioDeshabilitado == 0)
            {
                //guardo id usuario en Globals
                SqlCommand getId = new SqlCommand("select idUsuario from [PISOS_PICADOS].Empleado where usuario = @username", Globals.conexionGlobal);
                getId.Parameters.Add("@username", SqlDbType.VarChar);
                getId.Parameters["@username"].Value = textBoxUsuario.Text;
                int idUsr = (int)getId.ExecuteScalar();
                Globals.setUsuarioSesion(idUsr);
                Globals.setContraseñaUsuario(textBoxContrasena.Text);

                //continua

                //Si loguea bien, reseteamos intentos disponibles del usuario con el siguiente SP
                SqlCommand resetearIntentos = new SqlCommand("[PISOS_PICADOS].resetearIntentos", Globals.conexionGlobal);
                resetearIntentos.CommandType = CommandType.StoredProcedure;
                resetearIntentos.Parameters.Add("@usuarioEmpleado", SqlDbType.VarChar);
                resetearIntentos.Parameters["@usuarioEmpleado"].Value = textBoxUsuario.Text;
                resetearIntentos.ExecuteNonQuery();

                //verificamos si el usuario tiene un solo hotel. Si solo tiene uno, luego no lo mandamos a elegir
                SqlCommand tieneUnSoloHotel = new SqlCommand("SELECT [PISOS_PICADOS].tieneUnSoloHotel(@idUsuario)", Globals.conexionGlobal);
                tieneUnSoloHotel.Parameters.Add("@idUsuario", SqlDbType.Int);
                tieneUnSoloHotel.Parameters["@idUsuario"].Value = idUsr;
                int unHotel = (int)tieneUnSoloHotel.ExecuteScalar();

                //Si el usuario tiene un solo rol, lo mandamos directamente al menu con el mismo, sin llevarlo a la pantalla de elección.
                //Lo verificamos con la siguiente función:
                SqlCommand tieneUnSoloRol = new SqlCommand("SELECT [PISOS_PICADOS].tieneUnSoloRol(@usuario)", Globals.conexionGlobal);
                tieneUnSoloRol.Parameters.Add("@usuario", SqlDbType.VarChar);
                tieneUnSoloRol.Parameters["@usuario"].Value = textBoxUsuario.Text;
                int unRol = (int)tieneUnSoloRol.ExecuteScalar();

                if (unRol == 1)
                {
                    SqlCommand rol = new SqlCommand("SELECT [PISOS_PICADOS].obtenerUnicoRol(@usuario)", Globals.conexionGlobal);
                    rol.Parameters.Add("@usuario", SqlDbType.VarChar);
                    rol.Parameters["@Usuario"].Value = textBoxUsuario.Text;
                    int     idRol        = (int)rol.ExecuteScalar();
                    frmMenu menuInstance = new frmMenu();
                    menuInstance.asignarRol(idRol);
                    Globals.frmMenuInstance = menuInstance;
                    if (unHotel == 1)
                    {
                        menuInstance.Show();
                    }
                    else
                    {
                        frmElegirHotel instanciafrmElegirHotel = new frmElegirHotel(idUsr, menuInstance);
                        instanciafrmElegirHotel.Show();
                    }
                    Globals.getLogin().Hide();
                    return;
                }
                else
                {
                    Globals.getLogin().Hide();
                    frmElegirRol frmElegirRol = new frmElegirRol(textBoxUsuario.Text);
                    frmElegirRol.ShowDialog();
                    return;
                }
            }

            //Verificamos si el usuario está deshabilitado, en caso de estarlo avisamos y no dejamos loguear
            if (respuestaVerificacionUsuario == 1 && respuestaVerificacionUsuarioDeshabilitado == 1)
            {
                MessageBox.Show("Usuario deshabilitado.", "Error");
                return;
            }

            //Si el usuario existe pero la contraseña está mal, le restamos un intento
            if (respuestaVerificacionUsuario == 1 && respuestaVerificacionContraseña == 0 && respuestaVerificacionUsuarioDeshabilitado == 0)
            {
                SqlCommand sumarIntento = new SqlCommand("[PISOS_PICADOS].sumarIntento", Globals.conexionGlobal);
                sumarIntento.CommandType = CommandType.StoredProcedure;
                sumarIntento.Parameters.Add("@usuarioEmpleado", SqlDbType.VarChar);
                sumarIntento.Parameters["@usuarioEmpleado"].Value = textBoxUsuario.Text;
                sumarIntento.ExecuteNonQuery();

                SqlCommand cantidadIntentosFallidos = new SqlCommand("SELECT [PISOS_PICADOS].cantidadIntentosFallidos(@usuario)", Globals.conexionGlobal);
                cantidadIntentosFallidos.Parameters.Add("@usuario", SqlDbType.VarChar);
                cantidadIntentosFallidos.Parameters["@usuario"].Value = textBoxUsuario.Text;

                int intentosFallidos = (int)cantidadIntentosFallidos.ExecuteScalar();

                //Si llego a 3 intentos fallidos, se deshabilita el usuario
                if (intentosFallidos >= 3)
                {
                    MessageBox.Show("Ha llegado a la cantidad máxima de intentos fallidos. Su usuario será deshabilitado.", "Error");
                    SqlCommand deshabilitarUsuario = new SqlCommand("[PISOS_PICADOS].deshabilitarUsuario", Globals.conexionGlobal);
                    deshabilitarUsuario.CommandType = CommandType.StoredProcedure;
                    deshabilitarUsuario.Parameters.Add("@usuario", SqlDbType.VarChar);
                    deshabilitarUsuario.Parameters["@usuario"].Value = textBoxUsuario.Text;
                    deshabilitarUsuario.ExecuteNonQuery();
                    return;
                }

                MessageBox.Show("Contraseña incorrecta. Le quedan " + (3 - intentosFallidos) + " intentos.", "Error");
                return;
            }
        }