//public async Task<IActionResult> Register(string userName, string password, string returnUrl)
        public async Task <IActionResult> Register(RegisterViewModel registerViewModel, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(registerViewModel));
            }

            var bankService = new BankServiceClient();
            var newUser     = new User
            {
                UserName = registerViewModel.UserName,
                Password = registerViewModel.Password
            };

            try
            {
                var serviceResponse = await bankService.RegisterUserAsync(newUser);

                var sessionId = await bankService.CreateSessionAsync(registerViewModel.UserName);

                if (serviceResponse)
                {
                    //var claims = new List<Claim> { new Claim(ClaimTypes.Name, newUser.UserName) };

                    //var claimsIdentity = new ClaimsIdentity(claims, "password");
                    //var claimsPrinciple = new ClaimsPrincipal(claimsIdentity);

                    //await HttpContext.Authentication.SignInAsync("Cookies", claimsPrinciple);

                    //await HttpContext.Authentication.SignInAsync(registerViewModel.UserName);
                    await HttpContext.Authentication.SignInAsync(sessionId);

                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return(Redirect(returnUrl));
                    }

                    return(Redirect("/"));
                }
            }
            catch (FaultException exception)
            {
                ViewData["ReturnUrl"] = returnUrl;
                ViewData["Error"]     = exception.Message;

                return(View());
            }

            return(View());
        }