コード例 #1
0
        public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                //sección del recaptcha
                //Valido el capcha
                if (!this.IsCaptchaValid("Captcha is not valid"))
                {
                    ModelState.AddModelError(string.Empty, "Error: captcha no es válido.");
                }
                //si el captcha es valido
                else
                {
                    var MSG = new EnviarCorreoRecuperacionModel();

                    try
                    {
                        //Ejecuto los valores en el SP
                        var response = db.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();
                        //almaceno cambios asincronamente
                        await db.SaveChangesAsync();

                        //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty))
                        //ModelState.AddModelError(string.Empty, "No se encontraron coincidencias, para restablecer la contraseña");
                        if (response.codigo == 200)
                        {
                            MSG.codPlantilla = 3;
                            MSG.usercorreo   = response.correousuario;
                            MSG.id           = response.codprestador;
                            MSG.token        = response.token;


                            // invoco el constructor
                            EnviarCorreoController enviocorreo = new EnviarCorreoController();
                            //llamo el metodo que realiza la acción de envio de correos
                            var postdatos = await enviocorreo.PostSendEmailRecuperacionContrasenia(MSG);

                            // valido la respuesta del metodo
                            if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult")
                            {
                                //Limpio campos
                                ModelState.Clear();
                                //consulto el mensaje correspondiente para el esta caso
                                var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1017)).Select(m => new { codigo = m.codigo, tipo = m.tipo, mensaje = m.cuerpo }).First();
                                //creo un array a partir del json devuelto por la api para tratramiento
                                var json = JsonConvert.SerializeObject(msg, Formatting.Indented);
                                //creo un json dinamico para enviarlo a la vista
                                dynamic dynJson = JsonConvert.DeserializeObject(json);
                                //envio mensaje
                                TempData["mensaje"] = dynJson;
                                return(RedirectToAction("Index", "Sesion"));
                            }
                            else
                            {
                                // si la respuesta del correo fue erronea envio respuesta a la vista
                                ModelState.AddModelError(string.Empty, "No se pudo efectuar el restablecimiento de contraseña.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                        }
                    }//fin try
                    catch (Exception e)
                    {
                        // envio error a la api logs errores
                        //envio a la carpeta logs
                        APIS.LogsController log = new APIS.LogsController(e.ToString());
                        log.createFolder();
                        //envio error mensaje al usuario
                        ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el restablecimiento de contraseña, por favor intente mas tarde ");
                    }
                }//fin else captcha
            }
            return(View("RecuperarContrasenia", model));
        }
コード例 #2
0
        public async Task <ActionResult> RecuperarContrasenia(RecuperarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                //var MSG = new List<EnviarCorreoRecuperacionModel>();
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //sección del recaptcha
                    var    captcharesponse = Request["g-recaptcha-response"];
                    string secretKey       = System.Web.Configuration.WebConfigurationManager.AppSettings["recaptchaPrivateKey"]; //esta linea esta en el web config
                    var    client          = new WebClient();
                    var    result          = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretKey, captcharesponse));
                    var    obj             = JObject.Parse(result);
                    var    status          = (bool)obj.SelectToken("success");
                    //valido que el status del recapcha sea verdadero
                    if (status == true)
                    {
                        //Ejecuto los valores en el SP
                        var response = bd.SP_GenerarCodigoRecuperacionContraseniaUser(model.Usuario, model.Email).First();//.ToArray();
                        //almaceno cambios asincronamente
                        await bd.SaveChangesAsync();

                        //se elimina xq pueden llgar multiples respuestas if (response.Equals(string.Empty))
                        //response = HttpStatusCode.NotFound;
                        //ModelState.AddModelError(string.Empty, "No se encontraron coincidencias, para restablecer la contraseña");
                        if (response.codigo == 200)
                        {
                            MSG.codPlantilla = 3;
                            MSG.usercorreo   = response.correousuario;
                            MSG.id           = response.codprestador;
                            MSG.token        = response.token;

                            try
                            {
                                // invoco el constructor
                                EnviarCorreoController enviocorreo = new EnviarCorreoController();
                                //llamo el metodo que realiza la acción de envio de correos
                                var postdatos = await enviocorreo.PostSendEmailRecuperacionContrasenia(MSG);

                                //Console.WriteLine(postdatos.GetType());
                                //Console.WriteLine(postdatos.GetType().Name);
                                // valido la respuesta del metodo
                                if (postdatos.GetType().Name != null && postdatos.GetType().Name != "BadRequestResult")
                                {
                                    //creo un array a partir del json devuelto por la api para tratarlo desde aca y poder enviar los diferentes errores
                                    var json = JsonConvert.SerializeObject(response, Formatting.Indented);
                                    //creo un json dinamico para enviarlo a la vista
                                    dynamic dynJson = JsonConvert.DeserializeObject(json);
                                    ViewBag.SomeData = dynJson;
                                    return(View("Index"));
                                }
                                else
                                {
                                    // si la respuesta del correo fue erronea envio respuesta a la vista
                                    ModelState.AddModelError(string.Empty, "No se pudo efectuar el restablecimiento de contraseña.");
                                }
                            }
                            catch (Exception e)
                            {
                                // envio error a la api logs errores
                                //TODO
                                //envio a la carpeta logs
                                APIS.LogsController log = new APIS.LogsController(e.ToString());
                                log.createFolder();
                                //envio error mensaje al usuario
                                ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el restablecimiento de contraseña, por favor intente mas tarde");
                                throw e;
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                        }
                    }//fin if captcha
                    else
                    {
                        ModelState.AddModelError(string.Empty, "El captcha no se ingresó correctamente.");
                    }//fin else captcha
                }
                catch (Exception e)
                {
                    // envio error a la api logs errores
                    //TODO
                    //envio a la carpeta logs
                    APIS.LogsController log = new APIS.LogsController(e.ToString());
                    log.createFolder();
                    //envio error mensaje al usuario
                    ModelState.AddModelError(string.Empty, "Estamos presentando dificultades en el momento por favor intente mas tarde");
                }
            }
            return(View("RecuperarContrasenia", model));
        }