示例#1
0
        public void ResetPassword(ResetPasswordRequestViewModel request)
        {
            //var username = string.Format("{0}.{1}", request.FirstName, request.LastName);
            var usr = Context.Users.FirstOrDefault(user => user.Email == request.Email);

            if (usr == null)
            {
                throw new Exception("Nie istnieje użytkownik o podanym mailu.");
            }
            var pwdString = GetRandomPassword(8);

            usr.Salt            = _hashHelper.GetSalt();
            usr.Password        = _hashHelper.Compute(pwdString, usr.Salt);
            usr.PasswordCreated = DateTime.Now;
            EmailHelper.SendEmail(new EmailAccount
            {
                Email   = usr.Email,
                Subject = "Generacja nowego hasła",
                Request = string.Format("Witam, <br/><br/> " +
                                        "Na prośbę <b>{0} {1}</b> wygenerowano nowe hasło do aplikacji. <br/>" +
                                        "Login: <b>{2}</b> <br/>" +
                                        "Hasło: <b>{3}</b> <br/>" +
                                        "Jeśli nie składałeś prośby o nowe hasło proszę zignoruj tę wiadomość.<br/><br/>" +
                                        "Pozdrawiam, <br/>" +
                                        "Administrator aplikacji \"MTAB\" <br/><br/>" +
                                        "Odpowiedź wygenerowano automatycznie, proszę na nią nie odpowiadać.",
                                        usr.FirstName, usr.LastName, usr.Login, pwdString)
            });
        }
示例#2
0
        public ActionResult ResetPasswordRequest(ResetPasswordRequestViewModel resetPassword)
        {
            if (ModelState.IsValid)
            {
                string email   = resetPassword.Email;
                Member _member = rpMember.FindFirst(m => m.email == email);
                if (_member != null)
                {
                    string today = DateTime.Today.ToString();
                    string resetPasswordString    = _member.email + today;
                    string md5ResetPasswordHashed = Security.GenerateMd5("OMAR" + email.Length + resetPasswordString.Length + resetPasswordString);

                    //Save Reset Token to DB
                    _member.reset_token = md5ResetPasswordHashed;
                    rpMember.Edit(_member);


                    string resetPasswordUrl = Url.Action("ResetPassword", "Member", new { email = email, token = md5ResetPasswordHashed }, "http");

                    NotifyMember.ResetPassword(email, resetPasswordUrl);

                    return(View("Success", new MessageView()
                    {
                        Message = "An e-mail has been sent to " + email + " to recover the password."
                    }));
                }
                else
                {
                    ModelState.AddModelError("EmailNotFound", "Email is not registered.");
                }
            }
            return(View());
        }
示例#3
0
        public async Task <ActionResult> ResetPasswordRequest(ResetPasswordRequestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var client = apiClient())
            {
                ResetPasswordRoute   route    = externalRouteService.InternalUserResetPasswordRoute;
                PasswordResetRequest apiModel = new PasswordResetRequest(model.Email, route);

                var token = await apiClientCredential().GetClientCredentialsAsync();

                var result = await client.User.ResetPasswordRequestAsync(apiModel, token.AccessToken);

                if (!result.ValidEmail)
                {
                    ModelState.AddModelError("Email", "Email address not recognised.");
                    return(View(model));
                }
                ViewBag.Email = model.Email;
                return(View("ResetPasswordInstruction"));
            }
        }
示例#4
0
 public ActionResult ResetPassword(ResetPasswordRequestViewModel resetRequest)
 {
     try
     {
         resetRequest.Date = DateTime.Now;
         _unitOfWork.UserRepository.ResetPassword(resetRequest);
         _unitOfWork.SaveChanges();
         return(PartialView("~/Views/Login/Index.cshtml"));
     }
     catch (Exception e)
     {
         logger.Error(e, e.Message);
         Response.StatusCode = (int)HttpStatusCode.BadRequest;
         return(PartialView("~/Views/PartialViews/Error.cshtml", e.Message));
     }
 }
示例#5
0
        public async void HttpPost_ResetPasswordRequest_EmailNotInDatabase_ReturnsError()
        {
            var model = new ResetPasswordRequestViewModel
            {
                Email = "[email protected]"
            };

            A.CallTo(() => apiClient.User.ResetPasswordRequestAsync(A <string> ._)).Returns(false);

            var controller = AccountController();
            var result     = await controller.ResetPasswordRequest(model);

            Assert.IsType <ViewResult>(result);
            Assert.Equal(model, ((ViewResult)(result)).Model);
            Assert.False(controller.ModelState.IsValid);
        }
示例#6
0
        public void ResetPassword(ResetPasswordRequestViewModel model)
        {
            var account = _userDataMgr.GetUserByResetToken(model.Token);

            if (account == null)
            {
                throw new AppException("Invalid token");
            }

            // update password and remove reset token
            account.PasswordHash      = BC.HashPassword(model.Password);
            account.PasswordReset     = DateTime.UtcNow;
            account.ResetToken        = null;
            account.ResetTokenExpires = null;

            _userDataMgr.UpdateUser(account);
        }
示例#7
0
        public async void HttpPost_ResetPasswordRequest_EmailNotInDatabase_ReturnsResetPasswordInstructionView()
        {
            var model = new ResetPasswordRequestViewModel
            {
                Email = "[email protected]"
            };

            A.CallTo(() => apiClient.User.ResetPasswordRequestAsync(A <string> ._)).Returns(true);

            var controller = AccountController();
            var result     = await controller.ResetPasswordRequest(model);

            var viewResult = (ViewResult)result;

            Assert.Equal("ResetPasswordInstruction", viewResult.ViewName);
            Assert.Equal(model.Email, viewResult.ViewBag.Email);
        }
示例#8
0
        public async Task <ActionResult> Post([FromBody] ResetPasswordRequestViewModel model)
        {
            if (!CheckResult(model.Name, model.Username, model.Email))
            {
                return(new UnauthorizedResult());
            }

            var user = await userManager.FindByNameAsync(model.Username);

            if (user != null)
            {
                // Check user creditentals

                if (model.Name.Trim().Equals(user.Name) && model.Email.Trim().Equals(user.Email))
                {
                    await AServices.SendPasswordResetAsync(user);

                    return(new OkResult());
                }
            }
            return(new UnauthorizedResult());
        }
示例#9
0
        public async Task <IActionResult> ResetPasswordRequest(ResetPasswordRequestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                return(RedirectToAction(nameof(ResetPasswordEmailSent)));
            }
            var passwordResetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

            passwordResetToken = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(passwordResetToken));
            await _emailService.SendFromDoNotReplyAsync(
                user.Email,
                "Stack Underflow - Reset Password Request",
                Url.ActionLink("ResetPasswordConfirmation", "Account", new { email = model.Email, token = passwordResetToken }));

            return(RedirectToAction(nameof(ResetPasswordEmailSent)));
        }
        public async Task<ActionResult> ResetPasswordRequest(ResetPasswordRequestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            using (var client = apiClient())
            {
                ResetPasswordRoute route = externalRouteService.InternalUserResetPasswordRoute;
                PasswordResetRequest apiModel = new PasswordResetRequest(model.Email, route);

                var result = await client.User.ResetPasswordRequestAsync(apiModel);

                if (!result.ValidEmail)
                {
                    ModelState.AddModelError("Email", "Email address not recognised.");
                    return View(model);
                }
                ViewBag.Email = model.Email;
                return View("ResetPasswordInstruction");
            }
        }
 public IActionResult ResetPassword(ResetPasswordRequestViewModel model)
 {
     _accountService.ResetPassword(model);
     return(Ok(new { message = "Password reset successful, you can now login" }));
 }
示例#12
0
        public IActionResult ResetPasswordRequest()
        {
            var model = new ResetPasswordRequestViewModel();

            return(View(model));
        }