예제 #1
0
        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));
            }
        }
예제 #2
0
        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.");
            }
        }