//[ValidateAntiForgeryToken]
        public async Task <ActionResult <UserForgotPassword> > ForgotPassword(UserForgotPassword forgotPasswordModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(forgotPasswordModel));
            }

            var user = await _userManager.FindByEmailAsync(forgotPasswordModel.Email);

            if (user == null)
            {
                return(BadRequest("User Not Found"));
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var callback = Url.Action(nameof(ResetPassword), "UserAccount", new { token, email = user.Email }, Request.Scheme);

            var message = new EmailMessage(new string[] { user.Email }, "Password reset request", token, "Forgot");

            var userResponse = new UserConfirmation {
                token = token,
                Email = user.Email
            };

            _emailSender.SendEmail(message);

            return(Ok(userResponse));
        }
        public ActionResult Index(ForgotPasswordModel model)
        {
            if (ModelState.IsValid)
            {
                var user = UnitOfWork.Users.GetByEmailOrNull(model.Email);

                var forgotPassword = new UserForgotPassword()
                {
                    CreatedDate      = DateTime.Now,
                    CreatorIpAddress = new IpAddressResolver(HttpContext).GetUserHostIp(),
                    RequestGuid      = Guid.NewGuid()
                };
                user.UserForgotPasswords.Add(forgotPassword);

                UnitOfWork.SaveChanges();

                var emailArgs = new ResetPasswordNotificationEmailModel(user.Id)
                {
                    UserForgotPasswordId = forgotPassword.Id
                };
                _schedulerService.EmailSync(emailArgs);

                return(RedirectToAction("Success"));
            }
            return(View(model));
        }
Beispiel #3
0
 public ActionResult ForgotPassword(UserForgotPassword model)
 {
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     return(View());
 }
        public void ForgotPassword(UserForgotPassword entitie)
        {
            //nota: Para este caso resultaria talvez mas util que regresara un booleano ó
            //que regrese todo el item del usuario, y ocupemos el campo que necesitemos.
            if (_UserRepository.FindUserByEmail(entitie.Email) == "")
            {
                throw new Exception("El usuario no es valido");
            }

            //FALTA: Enviar el password que se encontro al correo que proporciono el usuario o una pagina para generarlo de nuevo.
        }
Beispiel #5
0
        public async Task <IActionResult> ForgotPassword([FromBody] UserForgotPassword model)
        {
            var user = await _repository.FindUserByUserName(model.Email);

            if (user != null)
            {
                await _repository.SendEmailPasswordReset(model.Email, model.CallbackUrl, user.FullName);

                return(Json(new { result = true, message = "The reset password link was sent." }));
            }

            return(Json(new { result = false, message = "Email doesn't exist in the system" }));
        }
 private bool TryValidateForgotPasswordRequest(UserForgotPassword forgotPasswordRequest, out string error)
 {
     error = "";
     if (forgotPasswordRequest == null)
     {
         error = "Reset Password key not found";
     }
     else if (forgotPasswordRequest.ApprovedDateTime != null || forgotPasswordRequest.IsExpired)
     {
         error = "Reset Password url expired";
     }
     return(string.IsNullOrEmpty(error));
 }
Beispiel #7
0
 public ActionResult ForgotPassword(UserForgotPassword entitie)
 {
     try
     {
         _userProcessor.ForgotPassword(entitie);
     }
     catch (Exception ex)
     {
         return(View("Error", ex));
     }
     ViewData["suscess"] = "Se ha enviado una notificación a su correo";
     return(View("Suscess"));
 }
 public IActionResult ResetPassword(ResetPasswordRequest model)
 {
     try
     {
         _authService.ResetPassword(model);
         UserForgotPassword userResetPassword = new UserForgotPassword
         {
             Message = "Password reset successful, you can now login"
         };
         return(Ok(userResetPassword));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e.Message));
     }
 }
 public IActionResult ForgotPassword(ForgotPasswordRequest model)
 {
     try
     {
         var verification = _authService.ForgotPassword(model, Request.Headers["origin"]);
         var user         = _userService.GetUserByEmail(model.Email);
         _emailService.SendPasswordResetEmail(verification, user, Request.Headers["origin"]);
         UserForgotPassword userForgotPassword = new UserForgotPassword
         {
             Message = "Password reset successful, you can now login"
         };
         return(Ok(userForgotPassword));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e.Message));
     }
 }
 public ActionResult ForgotPassword(UserForgotPassword user)
 {
     try
     {
         User student = (from p in db.Users where p.UserId == user.UserId && p.Password==user.OldPassword select p).SingleOrDefault();
         if (student != null)
         {
             student.Password = user.NewPassword;
             user.ClickedDateTime = DateTime.Now;
             user.WasPasswordChanged = true;
             user.UserClicked = true;
             db.SaveChanges();
         }
         return View();
     }
     catch (Exception ex)
     {
         return View();
     }
 }
Beispiel #11
0
        public async Task <IActionResult> Recover([FromBody] UserForgotPassword userForgot)
        {
            if (!await _context.Usuarios.AnyAsync(x => x.Email == userForgot.Email))
            {
                return(NotFound());
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_config.GetSection("AppSettings:ResetPassToken").Value);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Email, userForgot.Email)
                }),
                Expires            = DateTime.UtcNow.AddHours(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token            = tokenHandler.CreateToken(tokenDescriptor);
            var resetTokenString = tokenHandler.WriteToken(token);

            return(Ok(new { resetTokenString }));
        }