예제 #1
0
파일: Account.cs 프로젝트: iomeone/forum-1
        public async Task <IActionResult> ForgotPassword(InputModels.ForgotPasswordInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await AccountRepository.ForgotPassword(input);

                return(await this.RedirectFromService(serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                await AccountRepository.SignOut();

                var viewModel = new ViewModels.Account.ForgotPasswordPage {
                    Email = input.Email
                };

                return(View(viewModel));
            }
        }
예제 #2
0
        public async Task <ServiceModels.ServiceResponse> ForgotPassword(InputModels.ForgotPasswordInput input)
        {
            var serviceResponse = new ServiceModels.ServiceResponse();

            var account = await UserManager.FindByNameAsync(input.Email);

            if (account != null && await UserManager.IsEmailConfirmedAsync(account))
            {
                var code = await UserManager.GeneratePasswordResetTokenAsync(account);

                var callbackUrl = ResetPasswordCallbackLink(account.Id, code);

                if (!EmailSender.Ready)
                {
                    serviceResponse.RedirectPath = callbackUrl;
                    return(serviceResponse);
                }

                await EmailSender.SendEmailAsync(input.Email, "Reset Password", $"Please reset your password by clicking here: <a href='{callbackUrl}'>link</a>");
            }

            serviceResponse.RedirectPath = UrlHelper.Action(nameof(Account.ForgotPasswordConfirmation));
            return(serviceResponse);
        }