Я пытаюсь восстановить пароль для пользователя, который ввел его электронную почту.
Моя проблема: я не знаю, как это должно работать точно, я могу успешно отправить электронное письмо, но отправленная ему ссылка должна быть ссылкой на страницу восстановления с его токеном на URL, который я предполагаю?
Мне нужно знать, как я использую URL с моего сайта Angular ...
В моем коде я отправляю ссылку пользователю со ссылкой, но я думаю, что это нужно сделать после того, как пользователь перейдет на страницу с измененным паролем.
Вот мой код:
// Post Request
// POST : /api/AppUser/Login
#region Recover Password
[HttpPost]
[Route("RecoverPassword")]
public async Task<IActionResult> RecoverPassword(RecoverPasswordModel model)
{
var user = await _userService.FindByEmail(model.Email);
string code = await _userService.GetRecoveryToken(user);
string recoveryLink = Url.Action("RecoveryLink", "AppUser", new
{
UserId = user.Id,
Code = code
}, protocol: HttpContext.Request.Scheme);
bool finalRes = _userService.SendEmail(user, confirmationTokenLink);
if (finalRes)
return Ok();
else
return BadRequest(new { message = "No such user with this email" });
}
[HttpGet("[action]")]
[AllowAnonymous]
public async Task<IActionResult> RecoveryLink(string userId, string code, string newPassword)
{
if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(code))
return BadRequest(new { message = "Code or ID in empty" });
var user = await _userService.FindByID(userId);
if (user == null)
return BadRequest(new { message = "User not found!" });
var result = await _userService.ChangePassword(user, code, newPassword);
if (result.Succeeded)
return Content($"<html><body><h1>Your Password changed successfully!!! </h1><hr><a href= { EMAIL_VERIFIED_URI }> Please Login now! </a></body></html>", "text/html");
else
return BadRequest(new { message = "Reset failed!" });
}