Beispiel #1
0
        public async Task <IActionResult> Login()
        {
            try
            {
                logger.ScopeTrace("Start login.");

                var sequenceData = await sequenceLogic.GetSequenceDataAsync <LoginUpSequenceData>(remove : false);

                CheckUpParty(sequenceData);
                var loginUpParty = await tenantRepository.GetAsync <LoginUpParty>(sequenceData.UpPartyId);

                var session = await sessionLogic.GetAndUpdateSessionCheckUserAsync(loginUpParty, GetDownPartyLink(loginUpParty, sequenceData));

                var validSession = ValidSession(sequenceData, session);
                if (validSession && sequenceData.LoginAction != LoginAction.RequireLogin)
                {
                    return(await loginUpLogic.LoginResponseAsync(session.Claims.ToClaimList()));
                }

                if (sequenceData.LoginAction == LoginAction.ReadSession)
                {
                    return(await loginUpLogic.LoginResponseErrorAsync(sequenceData, LoginSequenceError.LoginRequired));
                }
                else
                {
                    logger.ScopeTrace("Show login dialog.");
                    return(View(nameof(Login), new LoginViewModel
                    {
                        SequenceString = SequenceString,
                        CssStyle = loginUpParty.CssStyle,
                        EnableCancelLogin = loginUpParty.EnableCancelLogin,
                        EnableResetPassword = !loginUpParty.DisableResetPassword,
                        EnableCreateUser = !validSession && loginUpParty.EnableCreateUser,
                        Email = sequenceData.Email.IsNullOrWhiteSpace() ? string.Empty : sequenceData.Email,
                    }));
                }
            }
            catch (Exception ex)
            {
                throw new EndpointException($"Login failed, Name '{RouteBinding.UpParty.Name}'.", ex)
                      {
                          RouteBinding = RouteBinding
                      };
            }
        }