Пример #1
0
        public async Task <Respuesta> RecoverPasswordAsync(string urlBase,
                                                           string servicePrefix,
                                                           string controller,
                                                           RecuperarPasswordViewModel recuperarPasswordPeticion)
        {
            try
            {
                var request = JsonConvert.SerializeObject(recuperarPasswordPeticion);
                var content = new StringContent(request, Encoding.UTF8, "application/json");
                var client  = new HttpClient
                {
                    BaseAddress = new Uri(urlBase)
                };

                var url      = $"{servicePrefix}{controller}";
                var response = await client.PostAsync(url, content);

                var answer = await response.Content.ReadAsStringAsync();

                var obj = JsonConvert.DeserializeObject <Respuesta>(answer);
                return(obj);
            }
            catch (Exception ex)
            {
                return(new Respuesta
                {
                    EsExitoso = false,
                    Mensaje = ex.Message,
                });
            }
        }
Пример #2
0
        public ActionResult RecuperarPassword(string usuarioid = null, Guid?token = null)
        {
            if (User.Identity.IsAuthenticated && usuarioid == null && token == null)
            {
                var user = UserManager.FindById(User.Identity.GetUserId());
                user.Token = SequentialGuidGenerator.NewSequentialGuid(SequentialGuidType.SequentialAtEnd);
                user.TokenFechaVencimiento = DateTime.Now.AddDays(5);
                UserManager.Update(user);

                var model = new RecuperarPasswordViewModel();
                model.Token     = user.Token;
                model.UsuarioId = user.Id;
                return(View(model));
            }
            else
            {
                var model = new RecuperarPasswordViewModel();
                model.Token     = token.Value;
                model.UsuarioId = usuarioid;
                return(View(model));
            }
        }
Пример #3
0
        public ActionResult RecuperarPassword(RecuperarPasswordViewModel model)
        {
            var user = UserManager.FindById(model.UsuarioId);

            if (string.IsNullOrWhiteSpace(model.Password) || string.IsNullOrWhiteSpace(model.ConfirmPassword))
            {
                model.Error = "No ha completado los datos solicitados";
                return(View("RecuperarPassword", model));
            }

            if (model.Password != model.ConfirmPassword)
            {
                model.Error = "La contraseña y su confirmación no son iguales";
                return(View("RecuperarPassword", model));
            }
            if (model.Password.Length < 6)
            {
                model.Error = "La contraseña debe tener al menos 6 caracteres";
                return(View("RecuperarPassword", model));
            }
            if (!model.Password.Any(c => char.IsLower(c)))
            {
                model.Error = "La contraseña debe contener al menos una minúscula";
                return(View("RecuperarPassword", model));
            }
            if (!model.Password.Any(c => char.IsUpper(c)))
            {
                model.Error = "La contraseña debe contener al menos una mayúscula";
                return(View("RecuperarPassword", model));
            }
            if (!model.Password.Any(c => char.IsNumber(c)))
            {
                model.Error = "La contraseña debe contener al menos un número";
                return(View("RecuperarPassword", model));
            }
            Regex RgxUrl = new Regex("[^a-z0-9]");

            if (model.Password.All(Char.IsLetterOrDigit))
            {
                model.Error = "La contraseña debe contener al menos un caracter (ejemplos: '!', '#', '-')";
                return(View("RecuperarPassword", model));
            }


            if (user != null)
            {
                if (user.Token.Equals(model.Token) && (DateTime.Now <= user.TokenFechaVencimiento))
                {
                    try
                    {
                        UserManager.PasswordHasher = new PasswordHasher();
                        user.PasswordHash          = UserManager.PasswordHasher.HashPassword(model.Password);

                        UserManager.Update(user);



                        model.Error     = null;
                        ViewBag.Success = true;
                        return(View("RecuperarPassword", model));
                    }
                    catch (Exception ex)
                    {
                        model.Error = "Ha ocurrido un error";
                        return(View("RecuperarPassword", model));
                    }
                }
                else
                {
                    model.Error = "El token no se corresponde con ningun usuario o el mismo ha expirado";
                    return(View("RecuperarPassword", model));
                }
            }
            else
            {
                model.Error = "El id no se corresponde con ningun usuario";
                return(View("RecuperarPassword", model));
            }
        }