public async Task <IActionResult> ForgotPassword(UserForgotPassword model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (ModelState.IsValid)
            {
                if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
                {
                    return(StatusCode(404));
                }

                var code = await _userManager.GeneratePasswordResetTokenAsync(user);

                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var callbackUrl = Url.Page(
                    "/Account/ResetPassword",
                    pageHandler: null,
                    values: new { area = "Identity", code },
                    protocol: Request.Scheme);

                await _emailSender.SendEmailAsync(
                    model.Email,
                    "Reset Password",
                    $"Please reset your password by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                return(StatusCode(404));
            }

            return(StatusCode(404));
        }
Beispiel #2
0
        public async Task <IActionResult> ForgotPassword([FromBody] UserForgotPassword model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (ModelState.IsValid)
            {
                if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
                {
                    return(StatusCode(404));
                }

                var code = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 1);

                var codeGenerated = code.First();
                // code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                // var callbackUrl = Url.Page(
                //     "/change-password",
                //     pageHandler: null,
                //     values: new { area = "Identity", code },
                //     protocol: Request.Scheme);

                await _emailSender.SendEmailAsync(
                    model.Email,
                    "Reset Password",
                    $"Your code for reset password: {codeGenerated}");

                return(StatusCode(404));
            }

            return(StatusCode(404));
        }