public async Task <IActionResult> Login(LoginViewModel loginViewModel, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(loginViewModel));
            }

            var bankService = new BankServiceClient();

            try
            {
                var serviceResponse = await bankService.AuthenticateUserAsync(loginViewModel.UserName, loginViewModel.Password);

                if (serviceResponse)
                {
                    //var claims = new List<Claim>{ new Claim(ClaimTypes.Name, loginViewModel.UserName) };
                    //var claimsIdentity = new ClaimsIdentity(claims);
                    //var claimsPrinciple = new ClaimsPrincipal(claimsIdentity);

                    //await HttpContext.Authentication.SignInAsync("Cookies", claimsPrinciple);
                    var sessionId = await bankService.CreateSessionAsync(loginViewModel.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());
        }