Beispiel #1
0
        public App()
        {
            InitializeComponent();

            if (AuthModel.MobilePhoneNumber != null)
            {
                MainPage = new NavigationPage(new MainPage());
            }
            else
            {
                MainPage = new AddPhoneNumber();
            }
            //((App.Current as App).MainPage as NavigationPage).PushAsync()
        }
Beispiel #2
0
        public async Task <IActionResult> AddPhoneNumber(AddPhoneNumber model)
        {
            if (!_accessor.ActionContext.ModelState.IsValid)
            {
                return(new OkObjectResult(model));
            }
            // Generate the token and send it
            var user = await GetCurrentUserAsync();

            var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.PhoneNumber);

            await _smsSender.SendSmsAsync(model.PhoneNumber, "Your security code is: " + code);

            return(new RedirectToActionResult(nameof(VerifyPhoneNumber), nameof(ManageController), new { PhoneNumber = model.PhoneNumber }));
        }
        public async Task <IActionResult> AddPhoneNumberAsync([FromBody] AddPhoneNumber model)
        {
            ApplicationUser user;

            try
            {
                user = await _userManager.FindByIdAsync(model.Id);

                if (user == null)
                {
                    _logger.LogError("~/Account/AddPhoneNumberAsync(AddPhoneNumber) - userManager unable to retrieve User Id:{0}'s information. This should have been a valid user.", model.Id);
                    return(Unauthorized());
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("!/Account/AddPhoneNumberAsync(AddPhoneNumber) - UserManger encountered and error connecting to the database. {0}", ex);
                return(StatusCode(503, new ApiResponse(503, "Error connecting to the database.")));
            }

            string code;

            try
            {
                code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.PhoneNumber);
            }
            catch (Exception ex)
            {
                _logger.LogError("~/Account/PhoneNumber(AddPhoneNumberViewModel) - userManager was not able to generate verification code for User Id:{0}. Error: {1}", model.Id, ex);
                throw;
            }

            AddPhoneNumber responseObj = new AddPhoneNumber
            {
                Id          = user.Id,
                PhoneNumber = model.PhoneNumber,
                Code        = code,
            };
            string response = JsonSerializer.Serialize <AddPhoneNumber>(responseObj);

            return(Ok(response));
        }
        public async Task <IActionResult> VerifyPhoneNumberAsync([FromBody] AddPhoneNumber model)
        {
            ApplicationUser user;

            try
            {
                user = await _userManager.FindByIdAsync(model.Id);

                if (user == null)
                {
                    _logger.LogError("~/Account/VerifyPhoneNumber(VerifyPhoneNumberViewModel) - userManager unable to retrieve User Id:{0}'s information. This should have been a valid user.", model.Id);
                    return(Unauthorized());
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("UserManger encountered an error. Connecting to the database? {0}", ex);
                return(StatusCode(503, new ApiResponse(503, "Error connecting to the database.")));
            }

            try
            {
                IdentityResult result = await _userManager.ChangePhoneNumberAsync(user, model.PhoneNumber, model.Code);

                if (!result.Succeeded)
                {
                    string errors = BuildErrorString(result);
                    _logger.LogError("~/Account/VerifyPhoneNumber(VerifyPhoneNumber) - userManager unable to add/change phone number for {0}'s account. Errors:{1}", user.Id, errors);
                    return(StatusCode(400, new ApiResponse(400, "An error occurred while attempting to verifiy your phone number. Did you enter the correct Verification Code?")));
                }

                _logger.LogInformation("User id:{0} successfully verified thier phone number.", model.Id);
                return(Ok("The phone number verification was a success"));
            }
            catch (Exception ex)
            {
                _logger.LogError("UserManger encountered an error. Connecting to the database? {0}", ex);
                return(StatusCode(503, new ApiResponse(503, "Error connecting to the database.")));
            }
        }