Esempio n. 1
0
        /// <summary>
        /// Login de usuario - valida las credenciales ingresadas
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="contrasena"></param>
        /// <returns></returns>
        public JsonResult ValidarUsuario(string usuario, string contrasena)
        {
            try
            {
                string extITCR     = WebConfigurationManager.AppSettings["extITCR"].ToString();
                string extTEC      = WebConfigurationManager.AppSettings["extTEC"].ToString();
                string extESTUDTEC = WebConfigurationManager.AppSettings["exESTUDTEC"].ToString();

                if (!usuario.Contains("@" + extITCR))
                {
                    usuario = usuario + "@" + extITCR; //Por ahora solo funcionarios
                }


                //Validación de nulos
                if (string.IsNullOrEmpty(usuario) || string.IsNullOrEmpty(contrasena))
                {
                    respuestaValidacion.CodigoRespuesta  = -1;
                    respuestaValidacion.MensajeRespuesta = Utilitarios.Mensajes.Mensajes.ValidacionNulos;
                    return(new JsonResult {
                        Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    });
                }

                if (!string.IsNullOrEmpty(usuario))
                {
                    if (usuario.Contains(extTEC))
                    {
                        usuario = usuario.Replace(extTEC, extITCR);
                    }
                }

                //Limpieza de datos de logueo
                usuario    = usuario.Trim();
                contrasena = contrasena.Trim();
                usuario    = usuario.ToLower();

                //Prevención inicial de inyección de código
                bool validaCaracteresUsuario  = Utilitarios.Clases.Utilitarios.ValidarCaracteresEspeciales(usuario);
                bool validaCaracteresPassword = Utilitarios.Clases.Utilitarios.ValidarCaracteresEspeciales(contrasena);

                //Validación caracteres usuario
                if (validaCaracteresUsuario)
                {
                    respuestaValidacion.CodigoRespuesta  = -1;
                    respuestaValidacion.MensajeRespuesta = Utilitarios.Mensajes.Mensajes.ValidacionCaracteresUsuario;
                    return(new JsonResult {
                        Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    });
                }
                //Validación caracteres contraseña
                else if (validaCaracteresPassword)
                {
                    respuestaValidacion.CodigoRespuesta  = -1;
                    respuestaValidacion.MensajeRespuesta = Utilitarios.Mensajes.Mensajes.ValidacionCaracteresContrasena;
                    return(new JsonResult {
                        Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    });
                }

                //Acceso a servicio para validación de usuario
                Session[ConfigurationManager.AppSettings["SessionID"]] = HttpContext.Session.SessionID;
                var consultaUsuario = ServiciosSeguridad.AutenticarUsuario(usuario, contrasena, idUsuarioLogueado, usuarioLogueado, Utilitarios.Clases.Utilitarios.GetIpAddress(), Session[sessionId].ToString());
                //Fue validado
                if (consultaUsuario.CodigoRespuesta == 0)
                {
                    //Si el usuario es válido crea la sesión
                    Session[ConfigurationManager.AppSettings["CodigoUsuarioLogueado"]] = consultaUsuario.ObjetoRespuesta.IdUsuario;
                    Session["sesionCodigoUsuarioLogueado"] = consultaUsuario.ObjetoRespuesta.IdUsuario;
                    Session[ConfigurationManager.AppSettings["usuarioLogueado"]] = usuario;
                    //generarPermisosMenu(usuario);
                    respuestaValidacion.CodigoRespuesta  = 0;
                    respuestaValidacion.MensajeRespuesta = string.Empty;
                    return(new JsonResult {
                        Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    });
                }
                else
                {
                    //Si el usuario no es válido no crea el dato de sesión
                    Session[ConfigurationManager.AppSettings["CodigoUsuarioLogueado"]] = "0";
                    Session[ConfigurationManager.AppSettings["usuarioLogueado"]]       = null;
                    respuestaValidacion.CodigoRespuesta  = -1;
                    respuestaValidacion.MensajeRespuesta = consultaUsuario.DescripcionRespuesta;
                    return(new JsonResult {
                        Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                    });
                }
            }
            catch (Exception)
            {
                respuestaValidacion.CodigoRespuesta  = -1;
                respuestaValidacion.MensajeRespuesta = Utilitarios.Mensajes.Mensajes.MensajeGenerico;
                return(new JsonResult {
                    Data = respuestaValidacion, JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });
            }
        }