Ejemplo n.º 1
0
 public IActionResult ForgotPassword(UserForgotPasswordDto userForgotPasswordDto)
 {
     if (!UserExist(userForgotPasswordDto.email))
     {
         User user = _userRepository.Find(x => x.Email == userForgotPasswordDto.email);
         user.Guid = Guid.NewGuid().ToString();
         _userRepository.UpdateAsync(user);
         _emailSender.SendEmail(user.Email, user.Guid);
         return(Ok(userForgotPasswordDto.email));
     }
     else
     {
         return(BadRequest("Email cannot find"));
     }
 }
Ejemplo n.º 2
0
 public IActionResult ForgotPassword(UserForgotPasswordDto forgotPasswordDto)
 {
     if (ModelState.IsValid)
     {
         User user = _userManager.Find(x => x.Email == forgotPasswordDto.Email);
         if (user == null)
         {
             ModelState.AddModelError("", "Your Email is wrong");
             return(View(forgotPasswordDto));
         }
         else
         {
             user.Guid = Guid.NewGuid().ToString();
             _userManager.UpdateAsync(user);
             _emailSender.SendEmail(forgotPasswordDto.Email, user.Guid);
             return(RedirectToAction("Login", "Home"));
         }
     }
     else
     {
         return(View(forgotPasswordDto));
     }
 }
Ejemplo n.º 3
0
        public async Task <IActionResult> ForgotPassword(UserForgotPasswordDto forgotPasswordDto)
        {
            var user = await _userManager.FindByEmailAsync(forgotPasswordDto.Email);

            if (user is null)
            {
                return(BadRequest("user not valid"));
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var forgotPasswordUrl = Url.Action(""
                                               , nameof(ResetPassword)
                                               , new { token = "mtoken" }
                                               , Request.Scheme);

            forgotPasswordUrl = forgotPasswordUrl.Replace("%2F", "/");

            var bytesToken  = Encoding.UTF8.GetBytes(token);
            var encodeToken = Convert.ToBase64String(bytesToken);

            var encodeEmail = Convert.ToBase64String(Encoding.UTF8.GetBytes(user.Email));

            forgotPasswordUrl = forgotPasswordUrl.Replace("?token=", "/");
            forgotPasswordUrl = forgotPasswordUrl.Replace("mtoken", encodeToken);
            forgotPasswordUrl = $"{forgotPasswordUrl}/{encodeEmail}";
            forgotPasswordUrl = forgotPasswordUrl.Replace("http://localhost:5000/", "http://localhost:5001/");

            var message = new Message(to: new [] { user.Email },
                                      subject: "restablezca su contraseña",
                                      content: string.Empty,
                                      forgotPasswordUrl,
                                      null);
            await _emailSender.SendEmailAsync(message, EmailTemplateType.ForgotPassword);

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> ForgotPassword(UserForgotPasswordDto userForgotPasswordDto)
        {
            string email = userForgotPasswordDto.Email;
            User   user  = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                string errorMessage = $"Failed to send reset password email. Unable to find user with the email: '{email}'.";
                _logger.LogError(errorMessage);
                return(NotFound(errorMessage));
            }

            string resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

            string callback = Url.Action("Reset", "user", new { resetToken }, Request.Scheme);

            Message message = new Message(new string[] { user.Email }, "Reset password token", callback);
            await _emailSender.SendEmailAsync(message);

            string successMessage = $"Successfully sent the reset password email to the user with the email: '{email}'.";

            _logger.LogInformation(successMessage);
            return(Ok(successMessage));
        }