Exemplo n.º 1
0
        public async Task <IHttpActionResult> RequestPasswordReset(RequestPasswordResetViewModel model)
        {
            // Validates the received email address based on the view model
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Gets the user entity for the specified email address
            var user = await _repo.FindByEmailAsync(model.Email);

            if (user != null)
            {
                // Generates a password reset token for the user
                string code = await _repo.GeneratePasswordResetTokenAsync(user.Id);

                code = HttpUtility.UrlEncode(code);
                Emailmodel emailmodel = new Emailmodel()
                {
                    From = ConfigurationManager.AppSettings["Sender"], To = model.Email, Subject = Constants.Contants.ChangePassWordSubject, Body = ""
                };
                EmailSender emailSender = new EmailSender();
                var         callBackUrl = string.Format("https://{0}/doi-mat-khau?token={1}&email={2}", Request.RequestUri.Authority, code, model.Email);
                emailmodel.Body = EmailSender.GetContentResetPassword(HostingEnvironment.MapPath(Constants.Contants.AccountRecoveryTemplateUrl), callBackUrl);
                await emailSender.Execute(emailmodel.From, emailmodel.To, emailmodel.Subject, "", emailmodel.Body);

                return(Ok());
            }
            // Displays a view asking the visitor to check their email and click the password reset link
            return(BadRequest());
        }
Exemplo n.º 2
0
        public async Task <IActionResult> SendPasswordResetLink(RequestPasswordResetViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var user = await UserManagerAgent.FindByNameAsync(model.UserName).ConfigureAwait(false);

            if (user == null || !await UserManagerAgent.IsEmailConfirmedAsync(user).ConfigureAwait(false))
            {
                ViewBag.Message = "Error while resetting your password!";
                return(View("Error"));
            }

            var token = await UserManagerAgent.GeneratePasswordResetTokenAsync(user).ConfigureAwait(false);

            var resetLink = Url.Action("ResetPassword", "Account", new { token }, protocol: HttpContext.Request.Scheme);

            // code to email the above link
            string[] emailAddresses = { _appSettings.SMTP.AdminEmail, user.Email };
            await _emailAgent.SendEmailAsync(_appSettings.SMTP.FromEmail, _appSettings.SMTP.FromEmail, emailAddresses,
                                             "Winemakers Software - Password Reset.", CreatePasswordResetEmail(resetLink), true, null).ConfigureAwait(false);

            // redirect to limbo page
            return(RedirectToAction("PasswordLimbo", "Account"));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> RequestPasswordReset(RequestPasswordResetViewModel model)
        {
            // Validates the received email address based on the view model
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Gets the user entity for the specified email address
            Kentico.Membership.User user = UserManager.FindByEmail(model.Email);

            if (user != null)
            {
                // Generates a password reset token for the user
                string token = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

                // Prepares the URL of the password reset link (targets the "ResetPassword" action)
                // Fill in the name of your controller
                string resetUrl = Url.Action("ResetPassword", "PasswordReset", new { userId = user.Id, token }, Request.Url.Scheme);

                // Creates and sends the password reset email to the user's address
                await UserManager.SendEmailAsync(user.Id, "Password reset request",
                                                 String.Format("To reset your account's password, click <a href=\"{0}\">here</a>", resetUrl));
            }

            // Displays a view asking the visitor to check their email and click the password reset link
            return(View("CheckYourEmail"));
        }
Exemplo n.º 4
0
        public IActionResult Get(string clientId)
        {
            SetViewBagClientId(new Guid(clientId));

            var vm = new RequestPasswordResetViewModel()
            {
                ClientId = Guid.Parse(clientId)
            };

            return(View("RequestPasswordReset", vm));
        }
        public async Task <ActionResult> RequestPasswordReset(RequestPasswordResetViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var cmd = new RequestPasswordReset(model.EmailAddress);
            await _messageBus.SendAsync(this.ClaimsUser(), cmd);

            return(View("PasswordRequestReceived"));
        }
        public async Task <ActionResult> RequestPasswordReset(RequestPasswordResetViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var cmd = new RequestPasswordReset(model.EmailAddress);
            await _commandBus.ExecuteAsync(cmd);

            return(View("PasswordRequestReceived"));
        }
Exemplo n.º 7
0
        public async Task <IActionResult> Post(Guid clientId, RequestPasswordResetViewModel requestPasswordResetViewModel)
        {
            SetViewBagClientId(clientId);

            if (!ModelState.IsValid)
            {
                return(View("RequestPasswordReset", requestPasswordResetViewModel));
            }

            await Mediator.Send(new RequestPasswordResetRequest { ClientId = clientId, Email = requestPasswordResetViewModel.Email });

            return(RedirectToAction("CodeSent", new { clientId, email = requestPasswordResetViewModel.Email }));
        }
        public void Setup()
        {
            _mediator    = new Mock <IMediator>();
            _owinWrapper = new Mock <IOwinWrapper>();
            _logger      = new Mock <ILogger>();

            _accountOrchestrator = new AccountOrchestrator(_mediator.Object, _owinWrapper.Object, _logger.Object);

            _requestPasswordResetViewModel = new RequestPasswordResetViewModel
            {
                Email = "*****@*****.**"
            };
        }
Exemplo n.º 9
0
        public ActionResult RequestPasswordReset(RequestPasswordResetViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToCurrentUmbracoPage());
            }

            IPublishedContent homePage = HomePage;
            string            url      = homePage.GetPropertyValue <IPublishedContent>("resetPasswordPage").Url;

            _memberService.CreatePasswordRequest(SiteSettings, viewModel.Email, $"{url}?token={{token}}", Umbraco);

            AddFeedback("An email containing password reset instructions has been sent", true);

            return(RedirectToCurrentUmbracoPage());
        }
Exemplo n.º 10
0
        public ActionResult RequestPasswordReset(RequestPasswordResetViewModel model)
        {
            var response = _userService.RequestPasswordReset(
                new RequestPasswordResetRequest(model.EmailAddress));

            if (response.Code != ResponseCode.Success && response.Code != ResponseCode.NotFound)
            {
                //this.AddErrorMessage("There has been an error requesting a password reset.");
            }
            else
            {
                //this.AddSuccessMessage("If entered email address exists you will receive a Password Reset email shortly.");
            }

            return(RedirectToAction("requestpasswordreset", "login"));
        }
        public async Task <RequestPasswordResetViewModel> StartForgottenPassword(string clientId, string returnUrl)
        {
            var model = new RequestPasswordResetViewModel();

            var relyingParty = await _mediator.SendAsync(new GetRelyingPartyQuery { Id = clientId });

            if (relyingParty == null)
            {
                AddInvalidClientIdReturnUrlMessage(model);
            }
            else
            {
                model.ReturnUrl = !string.IsNullOrEmpty(returnUrl) ? returnUrl : relyingParty.ApplicationUrl;
            }

            return(model);
        }
Exemplo n.º 12
0
        public async Task <ActionResult> ForgottenCredentials(RequestPasswordResetViewModel requestPasswordResetViewModel, string clientId)
        {
            requestPasswordResetViewModel.ClientId = clientId;
            requestPasswordResetViewModel          = await _accountOrchestrator.RequestPasswordResetCode(requestPasswordResetViewModel);

            var unlockCodeLength = await GetUnlockCodeLength();

            if (string.IsNullOrEmpty(requestPasswordResetViewModel.Email) || !requestPasswordResetViewModel.Valid)
            {
                return(View("ForgottenCredentials", requestPasswordResetViewModel));
            }


            return(View("ResetPassword", new OrchestratorResponse <PasswordResetViewModel> {
                Data = new PasswordResetViewModel {
                    Email = requestPasswordResetViewModel.Email, UnlockCodeLength = unlockCodeLength
                }
            }));
        }
        RequestPasswordReset(
            RequestPasswordResetViewModel model,
            ModelMethodContext context)
        {
            if (!context.ModelState.IsValid)
            {
                return;
            }

            // Validate the user password
            var user = _userManager.FindByEmail(model.Email);

            if ((user == null) || (!_userManager.IsEmailConfirmed(user.Id)))
            {
                context.ModelState.AddModelError(
                    "",
                    "The user either does not exist or is not confirmed.");
                return;
            }

            // For more information on how to enable account confirmation and
            // password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
            // Send email with the code and the redirect to reset password page
            var code        = _userManager.GeneratePasswordResetToken(user.Id);
            var callbackUrl = GetResetPasswordRedirectUrl(code);

            _userManager.SendEmail(
                user.Id,
                "Reset Password",
                EmailService.CreatePasswordResetMessage(callbackUrl)
                );

            // Modify this code to remove the code reference for production.
            // The code value should only be included for demonstration
            // purposes!
            StateController.Navigate(
                "RequestPasswordResetConfirmation",
                new NavigationData
            {
                { CodeKey, code }
            });
        }
        public async Task ThenTheResetCodeIsSent()
        {
            var response = new RequestPasswordResetViewModel
            {
                Email         = _requestPasswordResetViewModel.Email,
                ResetCodeSent = true
            };

            _accountOrchestrator.Setup(x => x.RequestPasswordResetCode(It.Is <RequestPasswordResetViewModel>(m => m.Email == _requestPasswordResetViewModel.Email)))
            .ReturnsAsync(response);

            var actual = await _accountController.ForgottenCredentials(_requestPasswordResetViewModel, "");

            var viewResult = (ViewResult)actual;
            var viewModel  = (OrchestratorResponse <PasswordResetViewModel>)viewResult.Model;

            Assert.IsNotNull(viewModel);
            Assert.AreEqual(response.Email, viewModel.Data.Email);
            Assert.AreEqual("ResetPassword", viewResult.ViewName);
        }
Exemplo n.º 15
0
        public async Task <IActionResult> RequestPasswordReset(RequestPasswordResetViewModel vm)
        {
            bool res = await _accountService.CheckUserPasswordReset(vm.Username);

            if (res)
            {
                var code = await _accountService.InitiatePasswordReset(vm.Username);

                _mailServerService.ConfigureMailServer(new NetworkCredential("*****@*****.**", "Lizio123"), 587, "smtp.gmail.com", "*****@*****.**");

                _mailServerService.SendMessage("Password Reset", "Hi,\n\t\tPlease use the following link to reset your password:\n" +
                                               $"\t\t{HttpContext.Request.Scheme}://{HttpContext.Request.Host}{HttpContext.Request.PathBase}/Account/Reset/{code}", vm.Username);
            }
            var emailSentViewModel = new EmailSentViewModel
            {
                EmailAddress = vm.Username,
                Message      = "An email has been sent, you can find a link to reset your password their."
            };

            return(View("EmailSent", emailSentViewModel));
        }
        public async Task <IActionResult> RequestPasswordReset([FromBody] RequestPasswordResetViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            model.Email = model.Email.Trim();

            try
            {
                var address = new MailAddress(model.Email);
            }
            catch (Exception e)
            {
                return(BadRequest("Podany adres E-Mail jest nieprawidłowy."));
            }

            var user = _context.Users.FirstOrDefault(u => u.Email.ToLower() == model.Email.ToLower());

            if (user == null)
            {
                return(Ok());
            }

            var resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);

            var resetLink = $"{Request.Scheme}://{Request.Host}/api/General/ResetPassword?email={WebUtility.UrlEncode(user.Email)}&token={WebUtility.UrlEncode(resetToken)}";

            try
            {
                _emailService.SendEmail(user, "Resetowanie hasła", $"Odwiedź następujący link by zresetować hasło: {resetLink}");
            }
            catch (Exception e)
            {
                return(BadRequest("Spróbuj ponownie za chwilę lub skontaktuj się z administratorem."));
            }

            return(Ok());
        }
        public void Setup()
        {
            _logger = new Mock <ILogger>();
            _requestPasswordResetViewModel = new RequestPasswordResetViewModel
            {
                Email = "*****@*****.**"
            };

            _accountOrchestrator = new Mock <AccountOrchestrator>();
            _errorResponse       = new RequestPasswordResetViewModel
            {
                Email           = _requestPasswordResetViewModel.Email,
                ResetCodeSent   = false,
                ErrorDictionary = new Dictionary <string, string>
                {
                    { "Email", "Error" }
                }
            };
            _accountOrchestrator.Setup(x => x.RequestPasswordResetCode(It.Is <RequestPasswordResetViewModel>(m => m.Email == _requestPasswordResetViewModel.Email))).ReturnsAsync(_errorResponse);

            _owinWrapper          = new Mock <IOwinWrapper>();
            _configurationService = new Mock <IConfigurationService>();
            _accountController    = new AccountController(_accountOrchestrator.Object, _owinWrapper.Object, new IdentityServerConfiguration(), _logger.Object);
        }
Exemplo n.º 18
0
        public IActionResult LoadRequestResetPassword()
        {
            var vm = new RequestPasswordResetViewModel();

            return(View("RequestPasswordReset", vm));
        }
        public virtual async Task <RequestPasswordResetViewModel> RequestPasswordResetCode(RequestPasswordResetViewModel model)
        {
            try
            {
                await _mediator.SendAsync(new RequestPasswordResetCodeCommand
                {
                    Email     = model.Email,
                    ReturnUrl = model.ReturnUrl
                });

                model.ResetCodeSent = true;
            }
            catch (InvalidRequestException ex)
            {
                _logger.Info(ex, ex.Message);
                model.ErrorDictionary = ex.ErrorMessages;
            }
            return(model);
        }