public async Task <IActionResult> AuthenticateLongCode([FromBody] AuthenticateLongCodeInputModel model)
        {
            if (ModelState.IsValid)
            {
                var status = await _authenticateOrchestrator.AuthenticateLongCodeAsync(model.LongCode);

                if (status.StatusCode == HttpStatusCode.Redirect)
                {
                    return(NextUrlJsonResult(status.RedirectUrl));
                }
                return(status.ToJsonResult());
            }
            return(new ActionResponse(ModelState).ToJsonResult());
        }
        public async Task <IActionResult> SignInLink(string longCode)
        {
            var response = await _authenticateOrchestrator.AuthenticateLongCodeAsync(longCode);

            switch (response.StatusCode)
            {
            case HttpStatusCode.Redirect:
                return(Redirect(response.RedirectUrl));

            case HttpStatusCode.NotFound:
                return(NotFound());

            case HttpStatusCode.Unauthorized:
            default:
                return(Redirect("/signin"));    // todo: pass response.Message along to be displayed to the user
            }
        }
        public async Task <ActionResult> SignInLink(string longCode)
        {
            var status = await _authenticateOrchestrator.AuthenticateLongCodeAsync(longCode);

            switch (status.StatusCode)
            {
            case HttpStatusCode.Redirect:
                return(Redirect(status.RedirectUrl));

            case HttpStatusCode.NotFound:
                return(NotFound());

            default:
                AddPostRedirectMessage(status.Text);
                return(RedirectToAction(nameof(SignIn)));
            }
        }
        public async Task <ActionResult> SignInLink(string longCode)
        {
            var response = await _authenticateOrchestrator.AuthenticateLongCodeAsync(longCode);

            switch (response.StatusCode)
            {
            case 301:
                var username = response.Message;
                await _authenticateOrchestrator.SignInUserAsync(HttpContext, username, false);

                return(Redirect(response.RedirectUrl));

            case 404:
                return(NotFound());

            default:
                AddPostRedirectMessage(response.Message);
                return(RedirectToAction("SignIn"));
            }
        }