Пример #1
0
        public async Task <IActionResult> Recuperacion(string token)
        {
            RecuperacionViewModel model = new RecuperacionViewModel();

            model.Token = token;
            return(View(model));
        }
Пример #2
0
        public async Task <IActionResult> Recuperacion(RecuperacionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var usuario = await _context.RecuperaContrasenias.Include(u => u.IdUsuarioNavigation)
                          .FirstOrDefaultAsync(u => u.Token == model.Token);

            if (usuario != null)
            {
                if (usuario.IdUsuarioNavigation != null)
                {
                    Usuario user = usuario.IdUsuarioNavigation;
                    user.Salt          = UtilsMethods.GenerarSalt();
                    user.Contrasenia   = CryptoHelper.Crypto.HashPassword(model.Contrasenia + user.Salt);
                    user.FechaModifica = DateTime.Now;
                    user.IpModifica    = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

                    usuario.Token = "Expired";
                    _context.Update(usuario);
                    _context.Update(user);
                    await _context.SaveChangesAsync();

                    ViewBag.Message = "Contraseña modificada con éxito";
                    return(View(nameof(Index)));
                }
            }
            else
            {
                ViewBag.Error = "Token no válido";
                return(View("Index"));
            }

            return(View(model));
        }