public async Task <IActionResult> ForgotPasswordViaSMS(ForgotPasswordViaEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    model.ModelStateValid = false;
                    ModelState.AddModelError("", $"We can't find an account with email:`{model.Email}`!");
                    return(View(model));
                }
                if (user.PhoneNumberConfirmed == false)
                {
                    model.ModelStateValid = false;
                    ModelState.AddModelError("", "Your account did not bind a valid phone number!");
                    return(View(model));
                }
                var code = StringOperation.RandomString(6);
                user.SMSPasswordResetToken = code;
                await _userManager.UpdateAsync(user);

                await _smsSender.SendAsync(user.PhoneNumber, code + " is your Aiursoft password reset code.");

                return(RedirectToAction(nameof(EnterSMSCode), new { model.Email }));
            }
            return(View(model));
        }
Beispiel #2
0
 public async Task<IActionResult> Phone(PhoneViewModel model)
 {
     var user = await GetCurrentUserAsync();
     if (!ModelState.IsValid)
     {
         model.Recover(user);
         model.ModelStateValid = ModelState.IsValid;
         return View(model);
     }
     if (model.NewPhoneNumber.Length == 11)
     {
         model.NewPhoneNumber = "+86" + model.NewPhoneNumber;
     }
     var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.NewPhoneNumber);
     await _sender.SendAsync(model.NewPhoneNumber, "Your security code is: " + code);
     return RedirectToAction(nameof(EnterCode), new { model.NewPhoneNumber });
 }
 public async Task<IActionResult> ForgotPasswordViaSMS(ForgotPasswordViaEmailViewModel model)
 {
     var mail = await _dbContext.UserEmails.SingleOrDefaultAsync(t => t.EmailAddress == model.Email.ToLower());
     if (mail == null)
     {
         return NotFound();
     }
     var user = await _userManager.FindByIdAsync(mail.OwnerId);
     if (user.PhoneNumberConfirmed == false)
     {
         return NotFound();
     }
     var code = StringOperation.RandomString(6);
     user.SMSPasswordResetToken = code;
     await _userManager.UpdateAsync(user);
     await _smsSender.SendAsync(user.PhoneNumber, code + " is your Aiursoft password reset code.");
     return RedirectToAction(nameof(EnterSMSCode), new { model.Email });
 }