Exemple #1
0
        public int iniciarLogin(string username, string pass)
        {
            string        passHash   = Encriptacion.getHashSha256(pass);
            SqlConnection connection = new SqlConnection(InfoGlobal.connectionString);
            SqlCommand    spCommand  = new SqlCommand("CUATROGDD2018.SP_login", connection);

            spCommand.CommandType = CommandType.StoredProcedure;
            connection.Open();
            spCommand.Parameters.Clear();
            //agrego parametros al SP_Login
            spCommand.Parameters.Add(new SqlParameter("@usuario", username));
            spCommand.Parameters.Add(new SqlParameter("@contras", passHash));
            spCommand.Parameters.Add("@loginCorrecto", SqlDbType.Bit).Direction  = ParameterDirection.Output;
            spCommand.Parameters.Add("@idUsuario", SqlDbType.Int).Direction      = ParameterDirection.Output;
            spCommand.Parameters.Add("@estaHabilitado", SqlDbType.Bit).Direction = ParameterDirection.Output;
            int idUsuario;

            spCommand.ExecuteNonQuery();
            Boolean loginCorrecto  = Convert.ToBoolean(spCommand.Parameters["@loginCorrecto"].Value);
            Boolean estaHabilitado = Convert.ToBoolean(spCommand.Parameters["@estaHabilitado"].Value);

            if (spCommand.Parameters["@idUsuario"].Value == System.DBNull.Value)
            {
                throw new System.ArgumentException("No existe username ingresado. Comuniquese con el administrador para crear usuario");
            }
            else
            {
                idUsuario = (int)spCommand.Parameters["@idUsuario"].Value;
            }
            if (loginCorrecto)
            {
                //reinicio contador de intentos de login
                DatosSesion.reiniciarIntentosLogin();
            }
            else
            {
                if (estaHabilitado)
                {
                    DatosSesion.incrementarIntentoLogin();
                    if (DatosSesion.seSuperoIntentosLogin())
                    {
                        //Se bloquea el usuario
                        SqlCommand commandBloquear = new SqlCommand("CUATROGDD2018.SP_BloquerUsuario", connection);
                        commandBloquear.CommandType = CommandType.StoredProcedure;
                        commandBloquear.Parameters.Add(new SqlParameter("@idUsuario", idUsuario));
                        commandBloquear.ExecuteNonQuery();
                        connection.Close();
                        MessageBox.Show("Se superaron los intentos para iniciar sesion. Usuario bloqueado. Contacte con su Administrador para desbloquear la cuenta");
                    }
                    else
                    {
                        connection.Close();
                        throw new System.ArgumentException("Contraseña incorrecta. Reingrese contraseña");
                    }
                }
                else
                {
                    connection.Close();
                    throw new System.ArgumentException("Usuario bloqueado. Contacte con su Administrador para desbloquear la cuenta");
                }
            }
            return(idUsuario);
        }