public async Task <IActionResult> PasswordRecovery([FromBody] DTOPasswordRecovery dto) { try { await _passwordRecoveryService.Execute(dto); return(Ok()); } catch (ApplicationException e) { return(BadRequest(e.Message)); } catch (Exception e) { return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message)); } }
public async Task Execute(DTOPasswordRecovery dto) { if (dto is null) { throw new ArgumentNullException(nameof(dto)); } var user = _userRepository.GetByEmail(dto.Email); if (user == null) { throw new ApplicationException("Usuário não encontrado."); } var newPassword = Guid.NewGuid().ToString().Split('-')[0]; var encryptedPassword = _encryption.GenerateCryptgraphy(newPassword); user.Password = encryptedPassword; var template = $@" <p> Olá <b>{user.Name.ToUpper()}</b> </p> <p>Recebemos uma solicitação para redefinir sua senha do MyBuy.</p> <p>Aqui está sua nova senha: <b>{newPassword}</b></p> <p>Recomendamos que você troque essa senha pois ela é provisória.</p> <p>Atenciosamente, equipe MyBuy.</p>"; try { await _sendMailService.SendEmail(user.Email, template, "Envio de senha provisória", isHtml : true); _userRepository.Update(user); _unitOfWork.Save(); } catch (Exception e) { throw new ApplicationException("Erro ao gerar nova senha."); } }