コード例 #1
0
        public async Task <Object> PostSendEmailRecuperacionContrasenia(EnviarCorreoRecuperacionModel datos)

        //public async Task<IHttpActionResult> PostSendEmailRecuperacionContrasenia(EnviarCorreoRecuperacionModel datos)
        {
            //Valido que los valores no lleguen vacios
            if (datos != null)
            {
                //var mappedPath = HttpContext.Current.Request.Url.AbsoluteUri; //mapeo la ruta completa del servidor
                var mappedPath = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + "/cargadorrips"; //mapeo la url del servidor

                //invoco metodo que permite obtener los datos del smtp del correo
                SmtpCorreos();
                //creo una variable para manejar los mensajes
                var MSG = new List <object>();

                SmtpClient client = new SmtpClient();
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.EnableSsl      = true;
                client.Host           = Host;
                client.Port           = Puerto;//587;
                client.EnableSsl      = true;
                // setup Smtp authentication
                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(SmtpCorreo, PassCorreo);
                client.UseDefaultCredentials = false;
                client.Credentials           = credentials;
                //can be obtained from your model
                MailMessage msg = new MailMessage();
                msg.From = new MailAddress(FromCorreo);
                msg.To.Add(new MailAddress(datos.usercorreo));
                //consulto el procedimiento para traer la información de la plantilla solicitada
                var result = bd.SP_GetPlantillaCorreo(datos.codPlantilla).First();
                //agrego el asunto
                msg.Subject    = result.asunto;
                msg.IsBodyHtml = true;
                //se arma cuerpo del correo
                msg.Body = String.Format(@result.cuerpo.ToString(), mappedPath.ToString(), datos.id.ToString(), datos.token.ToString());
                try
                {
                    await client.SendMailAsync(msg);

                    client.Dispose();
                    //USO linq para consultar la tabla de mensajes y dejar el mensaje modificable para el usuario
                    //TODO el mensaje esta erroneo
                    var linq1 = bd.Web_Mensaje.Where(s => s.codigo == 1009).First();
                    MSG.Add(new { type = linq1.tipo, value = linq1.cuerpo, codigo = linq1.codigo });
                }
                catch (Exception e)
                {
                    //envio a la tabla log
                    //TODO
                    //envio a la carpeta logs
                    LogsController log = new LogsController(e + "//" + Host.ToString());
                    log.createFolder();
                    return(BadRequest());
                }

                return(Json(MSG));
            }//fin if Valida que los valores no lleguen vacios
            return(BadRequest());
        }
コード例 #2
0
        public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model)
        {
            FormsAuthentication.SetAuthCookie("", false);
            if (ModelState.IsValid)
            {
                var MSG = new EnviarCorreoRecuperacionModel();
                try
                {
                    //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
                    {
                        //Ejecuto los valores en el SP
                        //borrarSP_Updaterestacontra
                        var response = db.SP_ChangeContraseniaUser(model.usuario_id, model.contrasenia).First();
                        //
                        await db.SaveChangesAsync();

                        // el procedimiento envia un codigo de 201 como respuesta
                        if (response.codigo == 201)
                        {
                            //consulto el mensaje correspondiente para el esta caso
                            var msg = db.Web_Mensaje.Where(m => m.codigo.Equals(1018)).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 tratarlo desde aca y poder enviar los diferentes errores
                            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;
                            //cierro sesiones
                            FormsAuthentication.SignOut();
                            //Cargo la vista
                            return(RedirectToAction("Index"));
                        }// fin if valida response
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                            return(RedirectToAction("Index"));
                        }
                    } //fin else captcha
                }     //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 momento por favor intente mas tarde");
                }
            }
            //return View();
            return(Logout());
        }
コード例 #3
0
        //[ValidateAntiForgeryToken] quito el validador del token ya que la aplicación se estalla y no hay forma de solucionar el problema TODO
        //[OutputCache(NoStore = true, Duration = 0)]
        public async Task <ActionResult> NuevaContrasenia(CambiarContraseniaViewModel model)
        {
            if (ModelState.IsValid)
            {
                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
                        //borrarSP_Updaterestacontra
                        var response = bd.SP_ChangeContraseniaUser(model.idUsuario, model.contrasenia).First();
                        //
                        await bd.SaveChangesAsync();

                        // el procedimiento envia un codigo de 201 como respuesta
                        if (response.codigo == 201)
                        {
                            //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;
                            FormsAuthentication.SignOut();
                            Session.Abandon();
                            return(View("Index"));
                        }// fin if valida response
                        else
                        {
                            ModelState.AddModelError(string.Empty, response.mensaje);
                            return(RedirectToAction("Index"));
                        }
                    }//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());
        }
コード例 #4
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));
        }
コード例 #5
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));
        }