Example #1
0
        public async Task <ActionResult> CompleteRegister(CompleteRegisterViewModel value)
        {
            if (!string.IsNullOrWhiteSpace(value.DeviceResponse) &&
                !string.IsNullOrWhiteSpace(value.UserName))
            {
                try
                {
                    value.DeviceResponse = await _membershipService.CompleteRegistration(value.UserName, value.DeviceResponse)
                        ? "Registration was successful."
                        : "Registration failed.";

                    return(View("SucessfulRegister", new CompleteRegisterViewModel {
                        UserName = value.UserName, DeviceResponse = value.DeviceResponse
                    }));
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                    ModelState.AddModelError("CustomError", e.Message);

                    return(View("FinishRegister", value));
                }
            }

            ModelState.AddModelError("CustomError", "bad username/device response");
            return(View("FinishRegister", value));
        }
Example #2
0
        public async Task <IActionResult> ChangeUserInfo()
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            //var model = from u in _context.AppUsers select new { Id = u.Id, Wallet = u.Wallet };
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            // MUST explicity load the user Wallet
            _context.Entry(user).Reference(s => s.UserAddress).Load();
            var address = user.UserAddress;

            var model = new CompleteRegisterViewModel
            {
                FirstName    = user.FirstName,
                LastName     = user.LastName,
                PhoneNumber  = user.PhoneNumber,
                Addressline1 = address.Addressline1,
                Addressline2 = address.Addressline2,
                City         = address.City,
                Province     = address.Province,
                Country      = address.Country,
                ZipCode      = address.ZipCode
            };

            return(View(model));
        }
Example #3
0
        public async Task <ActionResult> BeginRegister(StartRegisterViewModel viewModel)
        {
            bool isUserRegistered = await _membershipService.IsUserRegistered(viewModel.UserName);

            if (isUserRegistered)
            {
                ModelState.AddModelError("CustomError", "User is already registered.");
                return(View("Register", viewModel));
            }

            if (!string.IsNullOrWhiteSpace(viewModel.Password) &&
                !string.IsNullOrWhiteSpace(viewModel.UserName) &&
                viewModel.Password.Equals(viewModel.ConfirmPassword))
            {
                try
                {
                    bool result = await _membershipService.SaveNewUser(viewModel.UserName, viewModel.Password, viewModel.Email);

                    if (!result)
                    {
                        throw new Exception("Failed to create user");
                    }

                    ServerRegisterResponse serverRegisterResponse = await _membershipService.GenerateServerChallenge(viewModel.UserName);

                    CompleteRegisterViewModel registerModel = new CompleteRegisterViewModel
                    {
                        UserName  = viewModel.UserName,
                        AppId     = serverRegisterResponse.AppId,
                        Challenge = serverRegisterResponse.Challenge,
                        Version   = serverRegisterResponse.Version
                    };

                    return(View("FinishRegister", registerModel));
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                    ModelState.AddModelError("CustomError", e.Message);

                    return(View("Register", viewModel));
                }
            }

            ModelState.AddModelError("CustomError", "invalid input");
            return(View("Register", viewModel));
        }
Example #4
0
        public async Task <IActionResult> CompleteRegister(CompleteRegisterViewModel model, string returnUrl = null)
        {
            string userId = HttpContext.Session.GetString("userid");

            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByIdAsync(userId);

                if (user == null)
                {
                    throw new ApplicationException($"Unable to load user with ID '{user.Id}'.");
                }

                // update database from fields
                user.FirstName   = model.FirstName;
                user.LastName    = model.LastName;
                user.BirthDate   = model.BirthDate;
                user.PhoneNumber = model.PhoneNumber;

                // populate & add UserAddress object
                var address = new Address
                {
                    Addressline1 = model.Addressline1,
                    Addressline2 = model.Addressline2,
                    City         = model.City,
                    Province     = model.Province,
                    Country      = model.Country,
                    ZipCode      = model.ZipCode
                };
                user.UserAddress = address;

                _logger.LogInformation("User Registration Complete");

                user.Status = UserStatus.Activated;
                await _context.SaveChangesAsync();

                // display home page
                return(View("ConfirmEmail"));
            }
            // If we got this far, something failed, redisplay registration form
            return(View(model));
        }
        public async Task <IActionResult> GetChallenge()
        {
            try
            {
                List <ServerChallenge> serverRegisterResponse = await _membershipService.GenerateDeviceChallenges(HttpContext.User.Identity.Name);

                CompleteRegisterViewModel registerModel = new CompleteRegisterViewModel
                {
                    UserName  = HttpContext.User.Identity.Name,
                    AppId     = serverRegisterResponse[0].appId,
                    Challenge = serverRegisterResponse[0].challenge,
                    Version   = serverRegisterResponse[0].version
                };

                return(new JsonResult(JsonConvert.SerializeObject(registerModel)));
            }
            catch (Exception exception)
            {
                _logger.LogError(exception.Message);
            }
            return(NoContent());
        }
Example #6
0
        public async Task <IActionResult> ChangeUserInfo(CompleteRegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            _context.Entry(user).Reference(s => s.UserAddress).Load();
            var address = user.UserAddress;

            // update database from fields
            user.FirstName   = model.FirstName;
            user.LastName    = model.LastName;
            user.PhoneNumber = model.PhoneNumber;

            address.Addressline1 = model.Addressline1;
            address.Addressline2 = model.Addressline2;
            address.City         = model.City;
            address.Province     = model.Province;
            address.Country      = model.Country;
            address.ZipCode      = model.ZipCode;

            await _context.SaveChangesAsync();

            _logger.LogInformation("User changed their information successfully.");
            StatusMessage = "Your information has been updated.";

            return(RedirectToAction(nameof(Index)));
        }