public ActionResult EsqueceuSenha(CandidatoEsqueceuSenhaViewModel model) { if (!StringExt.IsNullOrWhiteSpace(model.Cpf, model.Email) && Valida.CPF(model.Cpf) && Valida.Email(model.Email)) { Candidato c = Candidato.ListarPorCPF(Formate.DeCPF(model.Cpf)); if (c != null && c.Email.ToLower() == model.Email.ToLower()) { string token = Candidato.GerarTokenParaAlterarSenha(c); string url = Url.Action("AlterarSenha", "Candidato", new { codigo = token }, Request.Url.Scheme); EnviarEmail.SolicitarSenha(c.Email, c.Nome, url); TempData["EsqueceuSenhaMensagem"] = $"Um email com instruções foi enviado para {c.Email}."; return(RedirectToAction("EsqueceuSenha")); } else { model.Mensagem = "Não foi encontrado nenhum candidato para os dados informados."; } } else { model.Mensagem = "Todos os campos devem serem preenchidos com valores válidos."; } return(View(model)); }
public static Candidato Autenticar(string cpf, string senha) { Candidato candidato = ListarPorCPF(Formate.DeCPF(cpf)); if (candidato != null && Criptografia.ChecarSenha(senha, candidato.Senha)) { return(candidato); } return(null); }
public ActionResult Cadastrar(CandidatoCadastrarViewModel model) { if (!StringExt.IsNullOrWhiteSpace(model.Nome, model.Cpf, model.Email, model.Senha, model.SenhaConfirmacao)) { if (model.SenhaConfirmacao == model.Senha) { if (Valida.Email(model.Email)) { model.Cpf = Formate.DeCPF(model.Cpf); if (Candidato.ListarPorCPF(model.Cpf) == null) { if (model.Cpf.Length == 11 && Valida.CPF(model.Cpf)) { var c = new Candidato() { Nome = model.Nome, Cpf = model.Cpf, Email = model.Email, Senha = Criptografia.RetornarHash(model.Senha) }; Candidato.Inserir(c); Sessao.Inserir("SimuladoCandidato", c); EnviarEmail.Cadastro(c.Email, c.Nome); return(RedirectToAction("Perfil")); } else { model.Mensagem = "Informe um CPF válido."; } } else { model.Mensagem = "Este CPF já está cadastrado."; } } else { model.Mensagem = "Informe um email válido."; } } else { model.Mensagem = "Senha de Confirmação diferente da Senha informada."; } } else { model.Mensagem = "Todos os campos são obrigatórios."; } return(View(model)); }
public ActionResult AlterarSenha(string codigo, CandidatoAlterarSenhaViewModel model) { string token = Uri.UnescapeDataString(codigo); Candidato candidado = Candidato.LerTokenParaAlterarSenha(Criptografia.Base64Decode(token)); if (candidado != null) { if (!StringExt.IsNullOrWhiteSpace(model.Cpf, model.Email, model.Senha, model.Confirmacao) && Valida.CPF(model.Cpf) && Valida.Email(model.Email) && model.Senha == model.Confirmacao) { using (var contexto = new Contexto()) { string cpf = Formate.DeCPF(model.Cpf); Candidato c = contexto.Candidato.FirstOrDefault(cand => cand.Cpf == cpf); if (c != null && c.Email.ToLower() == model.Email.ToLower()) { if (c.Cpf == candidado.Cpf && c.Email.ToLower() == candidado.Email.ToLower()) { c.Senha = Criptografia.RetornarHash(model.Senha); c.AlterarSenha = null; model.Mensagem = "Senha alterada com sucesso."; model.Ok = true; contexto.SaveChanges(); return(View(model)); } } else { model.Mensagem = "Não foi encontrado nenhum candidato para os dados informados."; } } } else { model.Mensagem = "Todos os campos devem serem preenchidos com valores válidos."; } return(View(model)); } return(RedirectToAction("Index")); }