public async Task<ActionResult> AddPhoneNumber(AddPhoneNumberViewModel model) { if (!ModelState.IsValid) { return View(model); } var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number); StoreFront storeFront = CurrentStoreFrontOrNull; string messageBody = StoreFrontExtensions.AddPhoneNumberMessage(storeFront, code, Request.Url); if (!Settings.AppEnableSMS) { //if app set to not enable SMS, just store phone number unverified return AddPhoneNumberNoSms(model, messageBody); } Client client = CurrentClientOrNull; if (client == null || !client.UseTwilioSms) { //if client is set to not enable SMS, just store phone number unverified return AddPhoneNumberNoSms(model, messageBody); } GStoreDb.LogUserActionEvent(HttpContext, RouteData, this, UserActionCategoryEnum.Profile, UserActionActionEnum.Profile_AddPhoneNumber, model.Number, true, smsPhone: model.Number); // Generate the token and send it bool result = this.SendSms(model.Number, messageBody); return RedirectToAction("VerifyPhoneNumber", new { PhoneNumber = model.Number }); }
protected ActionResult AddPhoneNumberNoSms(AddPhoneNumberViewModel model, string smsMessageBody) { UserProfile profile = CurrentUserProfileOrThrow; AspNetIdentityUser user = profile.AspNetIdentityUser(); user.PhoneNumberConfirmed = false; user.PhoneNumber = model.Number; IdentityResult result = UserManager.SetPhoneNumber(User.Identity.GetUserId(), model.Number); if (result.Succeeded) { GStoreDb.LogUserActionEvent(HttpContext, RouteData, this, UserActionCategoryEnum.Profile, UserActionActionEnum.Profile_AddPhoneNumber, model.Number, true, smsPhone: model.Number); AddUserMessage("Phone Number Updated", "Your phone number was updated successfully.", UserMessageType.Info); return RedirectToAction("Index"); } try { //try to send sms so it can be logged as a failure this.SendSms(model.Number, smsMessageBody); } catch (Exception) { } GStoreDb.LogUserActionEvent(HttpContext, RouteData, this, UserActionCategoryEnum.Profile, UserActionActionEnum.Profile_AddPhoneNumber, model.Number, false, smsPhone: model.Number); AddUserMessage("Phone Number Update Failed!", "Sorry, there was an error updating your phone number. Please try again.", UserMessageType.Danger); return RedirectToAction("AddPhoneNumber"); }
// // GET: /Profile/AddPhoneNumber public ActionResult AddPhoneNumber() { AddPhoneNumberViewModel viewModel = new AddPhoneNumberViewModel(); viewModel.Number = CurrentUserProfileOrThrow.AspNetIdentityUser().PhoneNumber; return View(viewModel); }