public ActionResult RecuperarSenha(string email, string button, string codigo, string senha, string confirmarsenha) { string Senha = "^(?=.*[0-9].*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$"; if (button == "enviar") { int codigoUsu; codigoUsu = usuarioServices.GeraCodigo(); Usuario usu = db.Usuario.Where(t => t.Email == email).ToList().FirstOrDefault(); if (usu == null) { ModelState.AddModelError("", "O email informado não está cadastrado em nossa base."); ViewBag.Email = "active"; ViewBag.Trocar = ""; return(View()); } else { RecuperarSenha rec = new RecuperarSenha { SenhaId = 0, UsuarioId = usu.UsuarioId, Vencimento = DateTime.Now.AddDays(1), Valido = true, Codigo = codigoUsu }; if (ModelState.IsValid) { db.RecuperarSenha.Add(rec); db.SaveChanges(); TempData["MSG"] = Funcoes.EnviarEmail(usu.Email, "RYS - Recuperar Senha", "<div style= 'background:rgb(245,245,245); width:760px; padding-bottom:30px '>" + " <h1 style= 'margin:0px; padding:16px 30px '>"+ " <a href='# '><img src='https://i.imgur.com/tF57D8G.png' alt=''></a>" + " </h1>"+ " <div style= 'padding:0px 30px '>"+ " <img src='https://imagizer.imageshack.com/v2/700x280q90/923/T6Lqa5.jpg' alt= '' style= 'vertical-align:top 'width= '700' height= '280'>"+ " </div>"+ " <div style= 'background:rgb(255,255,255); padding:48px 30px 47px; margin:0px 30px 0px; width:640px; '>"+ " <div style='color: rgb(0, 0, 0); line-height: 16px; padding-bottom: 17px; font-family: verdana, serif, 'EmojiFont '; font-size: 14px;'> "+ " <br /> "+ " Aqui vai o código pra você mudar sua senha:"+ " </div>"+ " <div style='padding: 19px 20px; border: 1px solid rgb(234, 234, 234); color: rgb(150, 150, 150); line-height: 20px; font-family: verdana, serif, 'EmojiFont '; font-size: 13px;'> "+ codigoUsu.ToString() + " </div>"+ " <div style='color: rgb(0, 0, 0); line-height: 16px; padding-top: 17px; font-family: verdana, serif, 'EmojiFont '; font-size: 14px;'> "+ " Agora é só entrar lá no rate your show e digitar esse código. Depois você cria a nova senha e tá feito"+ " </div>"+ " <div style='color: rgb(150, 150, 150); padding-top: 27px; font-family: verdana, serif, 'EmojiFont '; font-size: 13px;'>"+ " Esse e-mail foi enviado por <a href= ' ' style= 'text-decoration: none; color: rgb(255, 94, 58); '>RATE YOUR SHOW</a>."+ " </div>"+ " </div>"+ " </div>"); TempData["MSG"] = "success|E-mail enviado com sucesso"; } ViewBag.Email = ""; ViewBag.Trocar = "active"; return(View()); } } else { ViewBag.Email = ""; ViewBag.Trocar = "active"; int codigoUsu = Convert.ToInt32(codigo); RecuperarSenha rec = db.RecuperarSenha.Where(t => t.Codigo == codigoUsu).ToList().FirstOrDefault(); if (rec == null) { ModelState.AddModelError("", "Código inválido."); return(View()); } else { Usuario usu = db.Usuario.Find(rec.UsuarioId); if (!Regex.IsMatch(senha, Senha)) { ModelState.AddModelError("", "A senha do usuário deve conter no minimo 8 caractéres, caractéres especiais, 1 número e 1 letra maiúscula"); } if (confirmarsenha != senha) { ModelState.AddModelError("", "Senhas não conhecidem."); return(View()); } usu.Senha = crp.CriptografaSHA512(senha); if (rec.Vencimento < DateTime.Now || rec.Valido == false) { ModelState.AddModelError("", "Código expirado."); return(View()); } rec.Valido = false; if (ModelState.IsValid) { db.Entry(rec).State = EntityState.Modified; db.SaveChanges(); db.Entry(usu).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Cadastro", "Home")); } return(View()); } } }