public async Task<IActionResult> Index(string id)
        {
            var vm = new LoginViewModel();

            if (!string.IsNullOrEmpty(id))
            {
                var request = await _signInInteraction.GetRequestAsync(id);
                if (request != null)
                {
                    vm.Username = request.LoginHint;
                    vm.SignInId = id;
                }
            }

            return View(vm);
        }
        public async Task<IActionResult> Index(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (_signInService.ValidateCredentials(model.Username, model.Password))
                {
                    var user = _signInService.FindByUsername(model.Username);
                    await IssueCookie(user, "idsvr", "password");

                    if (model.SignInId != null)
                    {
                        return new SignInResult(model.SignInId);
                    }

                    return Redirect("~/");
                }

                ModelState.AddModelError("", "Invalid username or password.");
            }

            return View(model);
        }
        public async Task<IActionResult> Index(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (_signInService.ValidateCredentials(model.Username, model.Password))
                {
                    var user = _signInService.FindByUsername(model.Username);
                    await IssueCookie(user, "idsvr", "password");

                    if (!model.IsFidoAvailable || model.IsFidoEnable)
                    {
                        return new SignInResult(model.SignInId);
                    }
                    else
                    {
                        return Redirect("~/ui/add_credential?SignInId=" + model.SignInId + "&UserId=" + user.Subject);
                    }
                }

                ModelState.AddModelError("", "Invalid username or password.");
            }

            return View(model);
        }