Exemple #1
0
        // GET: restablecerPassword
        public ActionResult Index(string id, string llave)
        {
            Session["user_usuario"] = null;
            Session.Abandon();
            Session.Clear();
            Session.RemoveAll();
            int?buscaUsuario = context.GetUsuarioEncriptado(id).FirstOrDefault();

            if (buscaUsuario != null)
            {
                icb_solicitudnuevaclave buscarFechaSolicitud =
                    context.icb_solicitudnuevaclave.FirstOrDefault(x => x.solicitud_llave == llave);
                if (buscarFechaSolicitud != null)
                {
                    TimeSpan diff  = DateTime.Now - buscarFechaSolicitud.solicitud_fecha;
                    double   hours = diff.TotalHours;
                    if (hours > 0 && hours < 72)
                    {
                        users usuario = context.users.FirstOrDefault(x => x.user_id == buscaUsuario);

                        if (usuario != null && usuario.user_estado)
                        {
                            CambioContrasenaModel modelo = new CambioContrasenaModel
                            {
                                id_usuario = usuario.user_id
                            };
                            return(View(modelo));
                        }

                        return(RedirectToAction("Error"));
                    }

                    return(RedirectToAction("Error"));
                }
            }

            return(RedirectToAction("Error"));
        }
Exemple #2
0
        public ActionResult CambiarContrasena(CambioContrasenaModel modelo)
        {
            if (ModelState.IsValid)
            {
                var md5 = new MD5CryptoServiceProvider();
                md5.ComputeHash(Encoding.ASCII.GetBytes(modelo.ContrasenaActual));
                var result = md5.Hash;
                var str    = new StringBuilder();
                for (var i = 0; i < result.Length; i++)
                {
                    str.Append(result[i].ToString("x2"));
                }
                var pass   = str.ToString();
                var iduser = Convert.ToInt32(Session["user_usuarioid"]);
                var validarContrasenaActual =
                    context.users.FirstOrDefault(x => x.user_id == iduser && x.user_password == pass);
                if (validarContrasenaActual != null)
                {
                    if (modelo.ContrasenaNueva != modelo.ConfirmarContrasena)
                    {
                        TempData["mensaje"] = "Las contraseñas nuevas coinciden";
                    }
                    else
                    {
                        md5.ComputeHash(Encoding.ASCII.GetBytes(modelo.ContrasenaNueva));
                        var result2 = md5.Hash;
                        var str2    = new StringBuilder();
                        for (var i = 0; i < result2.Length; i++)
                        {
                            str2.Append(result2[i].ToString("x2"));
                        }

                        validarContrasenaActual.user_password        = str2.ToString();
                        context.Entry(validarContrasenaActual).State = EntityState.Modified;
                        var guardar = context.SaveChanges() > 0;

                        //Guardar en el historico de cambio de clave
                        context.icb_claveslog.Add(new icb_claveslog
                        {
                            clalog_contrasena = str2.ToString(),
                            clalog_fecha      = DateTime.Now,
                            id_usuario        = iduser
                        });
                        var guardaHistorico = context.SaveChanges() > 0;
                        if (guardar && guardaHistorico)
                        {
                            TempData["mensaje"] = "La contraseña se actualizo correctamente";
                        }
                        else
                        {
                            TempData["mensaje_error"] = "Error de conexion, intente mas tarde";
                        }
                    }
                }
                else
                {
                    TempData["mensaje_error"] = "Las contraseña actual no es la correcta";
                }
            }

            return(View(modelo));
        }
Exemple #3
0
        public ActionResult Index(CambioContrasenaModel modelo)
        {
            if (string.IsNullOrEmpty(modelo.ContrasenaNueva) && string.IsNullOrEmpty(modelo.ConfirmarContrasena))
            {
                TempData["mensaje_error"] = "Campos vacios";
                return(View(modelo));
            }

            if (modelo.ContrasenaNueva == modelo.ConfirmarContrasena)
            {
                var historico = (from h in context.icb_claveslog
                                 where h.id_usuario == modelo.id_usuario
                                 orderby h.clalog_fecha descending
                                 select new
                {
                    h.clalog_contrasena
                }).Take(5).ToList();

                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                md5.ComputeHash(Encoding.ASCII.GetBytes(modelo.ContrasenaNueva));
                byte[]        result = md5.Hash;
                StringBuilder str    = new StringBuilder();
                for (int i = 0; i < result.Length; i++)
                {
                    str.Append(result[i].ToString("x2"));
                }

                int error = 0;

                //buscamos si la clave nueva ingresada ya ha sido utilizada en las ultimas 5 claves del usuario
                foreach (var item in historico)
                {
                    if (str.ToString() == item.clalog_contrasena)
                    {
                        TempData["mensaje_error"] = "Las contraseña ingresada ya ha sido utilizada previamente";
                        error = 1;
                        break;
                    }
                }

                if (error > 0)
                {
                    return(View(modelo));
                }

                users buscaUsuario = context.users.FirstOrDefault(x => x.user_id == modelo.id_usuario);
                if (buscaUsuario != null)
                {
                    buscaUsuario.user_password        = str.ToString();
                    buscaUsuario.user_confirPassword  = str.ToString();
                    context.Entry(buscaUsuario).State = EntityState.Modified;
                    bool guardar = context.SaveChanges() > 0;

                    //Guardar en el historico de cambio de clave
                    context.icb_claveslog.Add(new icb_claveslog
                    {
                        clalog_contrasena = str.ToString(),
                        clalog_fecha      = DateTime.Now,
                        id_usuario        = buscaUsuario.user_id
                    });
                    bool guardaHistorico = context.SaveChanges() > 0;

                    if (guardar && guardaHistorico)
                    {
                        TempData["mensaje"] = "Cambio de contraseña exitoso";
                    }
                }
            }
            else
            {
                TempData["mensaje_error"] = "Las contraseñas no son iguales";
                return(View(modelo));
            }

            return(View());
        }