Ejemplo n.º 1
0
        public async Task <IActionResult> ForgotPassword([FromBody] ForgotPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var user = await _userManager.FindByNameAsync(model.Email);

                if (user == null)
                {
                    return(BadRequest(_messageModelBuilder.CreateModel("message", "Указанный пользователь не найден")));
                }
                if (!await _userManager.IsEmailConfirmedAsync(user))
                {
                    return(BadRequest(_messageModelBuilder.CreateModel("message", "E-mail не подтвержден")));
                }
                var code = await _userManager.GeneratePasswordResetTokenAsync(user);

                var webSiteUrl  = _config.GetSection("WebSite").Value;
                var callbackUrl = string.Format(webSiteUrl + "?id={0}&code={1}", user.Id, code);
                //var callbackUrl = Url.Action($"PasswordReset", $"Account", new {userId = user.Id, code = code}, HttpContext.Request.Scheme);
                await _emailSender.SendEmailAsync(model.Email, "Reset your password",
                                                  _emailBuilder.CreateForgotPasswordEmailBody(callbackUrl));

                return(Ok("На Ваш E-mail отправлено письмо для восстановления пароля."));
            }
            catch (Exception e)
            {
                return(BadRequest(_messageModelBuilder.CreateModel("500", e.Message)));
            }
        }