public async Task <IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { ApplicationUser user = new ApplicationUser { Email = model.Email, UserName = model.Email }; // добавляем пользователя var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { // генерация токена для пользователя var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); await _userManager.AddToRoleAsync(user, MyIdentityRole.ROLE_USER); var callbackUrl = Url.Action( "ConfirmEmail", "Password", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); _logger.LogInformation($"Подтвердите регистрацию,<br/> перейдя по ссылке: <a href='{callbackUrl}'>link</a>"); await SharedFunc.SendEmail(model.Email, $"Подтвердите регистрацию,<br/> перейдя по ссылке: <a href='{callbackUrl}'>link</a>", $"Подтвердите регистрацию"); _ctx.Add(new xUserInfo { email = model.Email, name = model.Email, family = model.Email, partonymic = model.Email, //theClient = request.OrganizationId, phone = "", islocked = 0, login = user.Id.ToString(), xUserInfoId = user.Id }); await _ctx.SaveChangesAsync(); return(Content("Для завершения регистрации проверьте электронную почту и перейдите по ссылке, указанной в письме")); } else { foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } } return(View(model)); }
public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(model.Email); if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) { // пользователь с данным email может отсутствовать в бд // тем не менее мы выводим стандартное сообщение, чтобы скрыть // наличие или отсутствие пользователя в бд return(View("ForgotPasswordConfirmation")); } var code = await _userManager.GeneratePasswordResetTokenAsync(user); var callbackUrl = Url.Action("ResetPassword", "Password", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); await SharedFunc.SendEmail(model.Email, $"Для сброса пароля пройдите по ссылке: <a href='{callbackUrl}'>link</a>", "Reset Password"); return(View("ForgotPasswordConfirmation")); } return(View(model)); }