//public Usuario GestorUsuarios { get; set; } = new Usuario(); public ResultadoAutenticacion Iniciar(UsuarioBEL usuario) { ResultadoAutenticacion valido = ResultadoAutenticacion.UsuarioInvalido; if (!(usuario == null)) { // *************** Restauracion de Base ************ if (usuario.Nombre.Equals("admin") && usuario.Clave.Equals("admin")) { PermisoSimple p = new PermisoSimple(); p.Nombre = "Permiso_Restaurar"; usuario.Perfil.Add(p); EstablecerUsuarioActual(usuario); return(ResultadoAutenticacion.UsuarioValido); } // buscar el usuario por su nombre UsuarioBEL usuarioEncontrado = new Usuario().ObtenerUno(usuario); if (!(usuarioEncontrado == null)) { // verificar que el usuario no este bloqueado if (!usuarioEncontrado.Bloqueado) { // encriptar la clave ingresada por el usuario string claveEncriptada = Criptografia.ObtenerInstancia.GetHashMD5(usuario.Clave); // verificar que las contraseñas encriptadas coinciden if (usuarioEncontrado.Clave.Equals(claveEncriptada)) { valido = ResultadoAutenticacion.UsuarioValido; // blanquear intentos incorrectos usuarioEncontrado.IntentosIncorrectos = 0; // establecer el usuario logueado actualmente en sesion EstablecerUsuarioActual(usuarioEncontrado); Bitacora.RegistrarEnBitacora("Inicio sesión del usuario: " + usuarioEncontrado.Nombre, TipoEvento.Auditoria); } else { // contraseñas invalidas, incrementar el contado de intentos fallidos usuarioEncontrado.IntentosIncorrectos += 1; Bitacora.RegistrarEnBitacora("Contraseña inválida usuario: " + usuarioEncontrado.Nombre + " Intentos incorrectos: " + usuarioEncontrado.IntentosIncorrectos, TipoEvento.Seguridad); // verificar si los intentos fallidos es mayor o igual a 3 if (usuarioEncontrado.IntentosIncorrectos >= 3) { usuarioEncontrado.Bloqueado = true; valido = ResultadoAutenticacion.UsuarioBloqueado; Bitacora.RegistrarEnBitacora("Se bloqueó el usuario: " + usuarioEncontrado.Nombre + " por Intentos incorrectos: " + usuarioEncontrado.IntentosIncorrectos, TipoEvento.Seguridad); } } // guardar los cambios del usuario new Usuario().Modificar(usuarioEncontrado); } else { valido = ResultadoAutenticacion.UsuarioBloqueado; Bitacora.RegistrarEnBitacora("El usuario " + usuarioEncontrado.Nombre + " se encuentra bloqueado", TipoEvento.Seguridad); } } else { Logger.WriteLog("No existe el usuario: " + usuario.Nombre); } } return(valido); }
protected void btnAceptar_Click(object sender, EventArgs e) { try { bool integridad = false; bool integridadBLL = false; integridad = _gestorIntegridad.validar(); integridadBLL = _gestorIntegridadBLL.validar(); if ((!integridad || !integridadBLL) & (txtIdUsuario.Text == "adminMaster")) { lblLogin.Text = Traductor.Mensaje("ERR100", "es-AR"); integridad = true; integridadBLL = true; } if (!integridad || !integridadBLL) { lblLogin.Text = _gestormensaje.leer_mensaje("ERR101", "es-AR").descripcion; } else { try { BE.Usuario usuario = new BE.Usuario(); usuario.idUsuario = txtIdUsuario.Text; usuario.Clave = txtClave.Text; ResultadoAutenticacion resultado = SesionActualWindows.SesionActual().Iniciar(usuario); switch (resultado) { case ResultadoAutenticacion.UsuarioContingencia: lblLogin.Text = Traductor.Mensaje("ERR102", "es-AR"); Page.Response.Redirect("bitacoras.aspx"); break; case ResultadoAutenticacion.UsuarioValido: //Si el usuario es válido, recupero la cultura y lo guardo en la sesión. Luego redirecciono a la pagina principal del sistema lblLogin.Text = ""; BE.Cultura cultura = new BE.Cultura(); //validio si la cultura recuperada es valida, sino por defecto asigno español Argentina if (SesionActualWindows.SesionActual().ObtenerUsuarioActual().Cultura != null) { cultura.idCultura = SesionActualWindows.SesionActual().ObtenerUsuarioActual().Cultura; } else { cultura = _gestorCultura.leer_cultura("es-AR"); } DateTime fechaD = Convert.ToDateTime(DateTime.Now.AddDays(-15)); _gestorBitacora.bitacora_migrar(fechaD); if (txtIdUsuario.Text == "adminMaster") { Page.Response.Redirect("bitacoras.aspx"); } else { Page.Response.Redirect("main.aspx"); } break; case ResultadoAutenticacion.UsuarioInvalido: lblLogin.Text = Traductor.Mensaje("ERR103", "es-AR"); break; case ResultadoAutenticacion.UsuarioBloqueado: lblLogin.Text = Traductor.Mensaje("ERR104", "es-AR"); break; } } catch (Exception) { lblLogin.Text = Traductor.Mensaje("ERR105", "es-AR"); } } } catch (Exception) { if (txtIdUsuario.Text == "adminMaster" && txtClave.Text == "Init753951!") { GestorPermiso _gestorPermiso = new GestorPermiso(); BE.Usuario usuario = new BE.Usuario(); usuario.idUsuario = txtIdUsuario.Text; usuario.Clave = txtClave.Text; usuario.Cultura = new System.Globalization.CultureInfo("es-AR"); BE.PermisoFiltro permiso = new BE.PermisoFiltro(); permiso.Nombre = "ADM MASTER"; usuario.Perfil = _gestorPermiso.leer_UnPermiso(permiso); ResultadoAutenticacion resultado = SesionActualWindows.SesionActual().IniciarContingencia(usuario); Page.Response.Redirect("bitacoras.aspx"); } else { lblLogin.Text = "ERROR BD - Contacte al administrador del sistema"; } } }