Esempio n. 1
0
        public async Task <IActionResult> SubmitLogin([FromForm] LoginModel model,
                                                      CancellationToken cancellationToken = default)
        {
            if (LoggedInUser <GoblinIdentityUserModel> .Current?.Data != null)
            {
                if (!string.IsNullOrWhiteSpace(model.Continue))
                {
                    return(Redirect(model.Continue));
                }

                return(RedirectToAction("Index", "Home"));
            }

            if (!ModelState.IsValid)
            {
                ViewBag.WarningMessage = Messages.InvalidData;

                return(View("Login", model));
            }

            if (string.IsNullOrWhiteSpace(model.Continue))
            {
                model.Continue = Url.AbsoluteAction("Index", "Home");
            }

            ViewBag.ContinueUrl = model.Continue;

            try
            {
                var generateAccessTokenModel = new GoblinIdentityGenerateAccessTokenModel
                {
                    UserName = model.UserName,
                    Password = model.Password
                };

                var accessToken =
                    await GoblinIdentityHelper.GenerateAccessTokenAsync(generateAccessTokenModel, cancellationToken);

                accessToken = accessToken?.Trim('"');

                CookieHelper.SetShare(HttpContext, GoblinCookieKeys.AccessToken, accessToken);

                return(View("LoggedIn"));
            }
            catch (GoblinException e)
            {
                ViewBag.ErrorMessage = e.ErrorModel.Message;

                return(View("Login", model));
            }
            catch (Exception e)
            {
                ViewBag.ErrorMessage = e.Message;

                return(View("Login", model));
            }
        }