Esempio n. 1
0
		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 });
		}
Esempio n. 2
0
		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");

		}
Esempio n. 3
0
		//
		// GET: /Profile/AddPhoneNumber
		public ActionResult AddPhoneNumber()
		{
			AddPhoneNumberViewModel viewModel = new AddPhoneNumberViewModel();

			viewModel.Number = CurrentUserProfileOrThrow.AspNetIdentityUser().PhoneNumber;
			return View(viewModel);
		}