Esempio n. 1
0
        public ActionResult CambiarContrasena(UsuarioActualMVC usuarioActual, [Bind(Prefix = "CambioDeContrasenaVM")] CuentaDeUsuarioCambiarContraseñaViewModel modelo)
        {
            var resultado = new ResultadoLLamadoAjax();

            if (ModelState.IsValid)
            {
                try
                {
                    IPasswordHasher passwordHasher = null;
                    IdentityResult  validador      = null;

                    if (!Convertidor.ContraseñaValida(modelo.ContrasenaNueva, out passwordHasher, out validador))
                    {
                        throw new ContraseñaInvalidaException(string.Join(",", validador.Errors));
                    }

                    var passwordHash = passwordHasher.HashPassword(modelo.ContrasenaNueva);

                    UnidadDeTrabajo.UsuarioRepositorio.CambiarPasswordHashPorIdUsuario(usuarioActual.UsuarioId, passwordHash);

                    resultado.LLamadoExitoso = true;
                }
                catch (ContraseñaInvalidaException ex)
                {
                    //ModelState.AddModelError("Contraseña", "La contraseña no es lo suficientemente segura. Por favor ingrese una contraseña de mayor complejidad");

                    var mensajeDeError = new CamposInvalidos()
                    {
                        NombreDelCampo = "CambioDeContrasenaVM.ContrasenaNueva", MensajeDeError = "La contraseña no es lo suficientemente segura. Por favor ingrese una contraseña de mayor complejidad"
                    };
                    resultado.CamposInvalidos.Add(mensajeDeError);
                }
                catch (Exception ex)
                {
                    resultado.MensajeDeErrorGeneral = "Ocurrio Un error";
                }

                return(Json(resultado));
            }
            else
            {
                resultado.CamposInvalidos = ErroresDelModeloComoCamposInvalidos;

                return(Json(resultado));
            }
        }