public async Task <ActionResult <Models.Response.CodigoRecuperacaoResponse> > GerarCodigoAsync(Models.Request.CodigoRecupecaoRequest req) { try { long codigo = esqueciSenhaBsn.GerarCodigoRecuperacao(); Models.TbLogin usuario = await usuarioBsn.ConsultarLoginPorEmailAsync(req.Email); Models.TbEsqueciSenha tb = esqueciSenhaCnv.ToTbEsqueciSenha(codigo, usuario, req.Email); tb = await esqueciSenhaBsn.SalvarCodigoRecuperacaoAsync(tb); gerenciadorEmailBsn.EnviarEmailCodigo(tb.DsEmail, tb.TmExpiracao, tb.NrCodigo); Models.Response.CodigoRecuperacaoResponse resp = esqueciSenhaCnv.ToEsqueciSenhaResponse(tb, usuario); return(resp); } catch (Exception e) { return(BadRequest( new Models.Response.ErroResponse(400, e.Message) )); } }
public async Task <Models.TbEsqueciSenha> DeletarRecuperacaoDeSenhaPorTempo(Models.TbEsqueciSenha req) { ctx.TbEsqueciSenha.Remove(req); await ctx.SaveChangesAsync(); return(req); }
public async Task <Models.TbEsqueciSenha> SalvarCodigoRecuperacaoAsync(Models.TbEsqueciSenha req) { await ctx.TbEsqueciSenha.AddAsync(req); await ctx.SaveChangesAsync(); return(req); }
public Models.Response.CodigoRecuperacaoResponse ToEsqueciSenhaResponse(Models.TbEsqueciSenha tb, Models.TbLogin tbLogin) { Models.Response.CodigoRecuperacaoResponse resp = new Models.Response.CodigoRecuperacaoResponse(); resp.Email = tbLogin.DsEmail; resp.IdLogin = tb.IdLogin; return(resp); }
public Models.TbEsqueciSenha ToTbEsqueciSenha(long codigo, Models.TbLogin usuario, string email) { Models.TbEsqueciSenha tb = new Models.TbEsqueciSenha(); tb.DsEmail = email; tb.IdLogin = usuario.IdLogin; tb.NrCodigo = codigo; tb.TmInclusao = DateTime.Now; tb.TmExpiracao = DateTime.Now.AddMinutes(15); return(tb); }
public async Task <Models.TbEsqueciSenha> SalvarCodigoRecuperacaoAsync(Models.TbEsqueciSenha req) { if (req.IdLogin <= 0) { throw new Exception("Usuário não encontrado."); } if (req.TmExpiracao < DateTime.Now) { throw new Exception("O código expirou, iremos reenviar o email de recuperação de senha."); } if (req.TmInclusao > DateTime.Now) { throw new Exception("Período do código inválido."); } if (!req.DsEmail.Contains('@')) { throw new Exception("Este Email é invalido."); } if (req.NrCodigo <= 0) { throw new Exception("Código inválido."); } bool codigoOk = await this.ValidarCodigoDeRecuperacaoAsync(req.NrCodigo); long codigoTest = req.NrCodigo; while (codigoOk == false) { codigoTest = this.GerarCodigoRecuperacao(); codigoOk = await this.ValidarCodigoDeRecuperacaoAsync(codigoTest); } req.NrCodigo = codigoTest; req = await esqueciSenhaDB.SalvarCodigoRecuperacaoAsync(req); return(req); }
public async Task <ActionResult <Models.Response.ValidarCodigoRecuperacaoResponse> > ValidarCodigoAsync(Models.Request.ValidarCodigoRecuperacaoRequest req) { try { long codigo = esqueciSenhaCnv.ToCodigo(req); Models.TbEsqueciSenha tb = await esqueciSenhaBsn.ConsultarRecuperacaoDeSenhaPorCodigoAsync(codigo); Models.Response.ValidarCodigoRecuperacaoResponse resp = esqueciSenhaCnv.ToValidarEsqueciSenhaResponse(tb); return(resp); } catch (Exception ex) { return(BadRequest( new Models.Response.ErroResponse(400, ex.Message) )); } }
public async Task <ActionResult <Models.Response.CodigoRecuperacaoResponse> > AlterarSenhaDeletarCodigoAsync(int?idLogin, Models.Request.NovaSenhaRequest req) { try{ esqueciSenhaBsn.ValidarSenhasIdenticas(req.Senha, req.ConfirmarSenha); Models.TbLogin tbNovo = esqueciSenhaCnv.ToSenha(req); Models.TbLogin tbAtual = await esqueciSenhaBsn.ConsultarLoginPorIdAsync(idLogin); Models.TbEsqueciSenha tbEsqueciSenha = await esqueciSenhaBsn.ConsultarTbEsqueciSenhaPorIdLoginAsync(tbAtual); tbAtual = await esqueciSenhaBsn.DeletarRecuperacaoDeSenhaAsync(tbNovo, tbAtual, tbEsqueciSenha); Models.Response.CodigoRecuperacaoResponse resp = esqueciSenhaCnv.ToEsqueciSenhaResponse(tbEsqueciSenha, tbAtual); return(resp); } catch (Exception e) { return(BadRequest( new Models.Response.ErroResponse(400, e.Message) )); } }
public async Task <Models.TbEsqueciSenha> ConsultarRecuperacaoDeSenhaPorCodigoAsync(long codigo) { if (codigo < 111111 || codigo > 999999) { throw new Exception("Código inválido."); } Models.TbEsqueciSenha resp = await esqueciSenhaDB.ConsultarRecuperacaoDeSenhaPorCodigoAsync(codigo); if (resp == null) { throw new Exception("Código não encontrado."); } if (resp.TmExpiracao < DateTime.Now) { resp = await this.DeletarRecuperacaoDeSenhaPorTempoAsync(resp); throw new Exception("O código expirou, iremos reenviar o email de recuperação de senha."); } return(resp); }
public async Task <Models.TbLogin> DeletarRecuperacaoDeSenhaAsync(Models.TbLogin novo, Models.TbLogin atual, Models.TbEsqueciSenha req) { if (req == null) { throw new Exception("Código não encontrado."); } bool senhaOk = usuarioBsn.SenhaForte(novo.DsSenha); if (senhaOk == false) { throw new Exception("A senha deve conter pelo menos um caracter especial, " + "uma letra maiúscula, dois números e oito digitos."); } atual = await esqueciSenhaDB.DeletarRecuperacaoDeSenhaAsync(novo, atual, req); return(atual); }
public async Task <Models.TbEsqueciSenha> DeletarRecuperacaoDeSenhaPorTempoAsync(Models.TbEsqueciSenha req) { if (req == null) { throw new Exception("Código não encontrado."); } req = await esqueciSenhaDB.DeletarRecuperacaoDeSenhaPorTempo(req); return(req); }
public Models.Response.DeletarCodigoRecuperacaoResponse ToDeletarEsqueciSenhaResponse(Models.TbEsqueciSenha req) { Models.Response.DeletarCodigoRecuperacaoResponse resp = new Models.Response.DeletarCodigoRecuperacaoResponse(); resp.Codigo = req.NrCodigo; return(resp); }
public Models.Response.ValidarCodigoRecuperacaoResponse ToValidarEsqueciSenhaResponse(Models.TbEsqueciSenha tb) { Models.Response.ValidarCodigoRecuperacaoResponse resp = new Models.Response.ValidarCodigoRecuperacaoResponse(); resp.Valido = true; resp.IdLogin = tb.IdLogin; return(resp); }
public async Task <Models.TbLogin> DeletarRecuperacaoDeSenhaAsync(Models.TbLogin novo, Models.TbLogin atual, Models.TbEsqueciSenha reqEsqueciSenha) { atual.DsSenha = novo.DsSenha; List <Models.TbEsqueciSenha> lista = ctx.TbEsqueciSenha.Where(x => x.IdLogin == atual.IdLogin).ToList(); while (lista.Count() > 0) { lista.Remove(reqEsqueciSenha); ctx.TbEsqueciSenha.Remove(reqEsqueciSenha); await ctx.SaveChangesAsync(); reqEsqueciSenha = await this.ConsultarTbEsqueciSenhaPorIdLoginAsync(atual); } await ctx.SaveChangesAsync(); return(atual); }