예제 #1
0
            ) BuildActionLoginPost(ModIdentityServerWebMvcPartAccountJobLoginPostInput input)
        {
            input.СlientStore    = ExtClientStore;
            input.Events         = ExtEvents;
            input.Interaction    = ExtInteraction;
            input.SchemeProvider = ExtSchemeProvider;
            input.SignInManager  = ExtSignInManager;
            input.UserManager    = ExtUserManager;

            var job = AppJobLoginPost;

            Task <ModIdentityServerWebMvcPartAccountCommonJobLoginOutput> execute() => job.Execute(input);

            void onSuccess(ModIdentityServerWebMvcPartAccountCommonJobLoginResult result)
            {
                job.OnSuccess(ExtLogger, result, input);
            }

            void onError(Exception ex, ModIdentityServerWebMvcPartAccountCommonJobLoginResult result)
            {
                job.OnError(ex, ExtLogger, result);

                foreach (var errorMessage in result.ErrorMessages)
                {
                    input.ModelState.AddModelError(string.Empty, errorMessage);
                }
            }

            return(execute, onSuccess, onError);
        }
예제 #2
0
        public async Task <IActionResult> LoginPost(
            ModIdentityServerWebMvcPartAccountViewLoginModel model,
            string action
            )
        {
            var result = new ModIdentityServerWebMvcPartAccountCommonJobLoginResult();

            var input = new ModIdentityServerWebMvcPartAccountJobLoginPostInput
            {
                Action     = action,
                Model      = model,
                ModelState = ModelState,
                UrlHelper  = Url
            };

            var(execute, onSuccess, onError) = MyModel.BuildActionLoginPost(input);

            try
            {
                result.Data = await execute().CoreBaseExtTaskWithCurrentCulture(false);

                onSuccess(result);
            }
            catch (Exception ex)
            {
                onError(ex, result);
            }

            return(input.Status switch
            {
                ModIdentityServerWebMvcPartAccountJobLoginPostEnumStatuses.Index =>
                Redirect("~/"),
                ModIdentityServerWebMvcPartAccountJobLoginPostEnumStatuses.Redirect =>
                View(
                    "Redirect",
                    new ModIdentityServerWebMvcViewRedirectModel
                {
                    RedirectUrl = result.Data.ReturnUrl
                }),
                ModIdentityServerWebMvcPartAccountJobLoginPostEnumStatuses.Return =>
                Redirect(result.Data.ReturnUrl),
                _ =>
                View("~/Views/Account/Login.cshtml", result.Data),
            });
예제 #3
0
        /// <summary>
        /// Отправить вход в систему.
        /// </summary>
        /// <param name="input">Ввод.</param>
        /// <returns>Задача с выводом.</returns>
        public async Task <ModIdentityServerWebMvcPartAccountCommonJobLoginOutput> PostLogin(
            ModIdentityServerWebMvcPartAccountJobLoginPostInput input
            )
        {
            input.Status = await ProcessLoginPost(
                input.Model,
                input.Action,
                input.Events,
                input.ModelState,
                input.SignInManager,
                input.UrlHelper,
                input.UserManager,
                input.Interaction,
                input.СlientStore
                ).CoreBaseExtTaskWithCurrentCulture(false);

            return(await ProduceLogin(
                       input.Model.ReturnUrl,
                       input.Model.LoginMethod,
                       input.Interaction,
                       input.SchemeProvider,
                       input.СlientStore
                       ).CoreBaseExtTaskWithCurrentCulture(false));
        }