private async Task <LogInTryoutResult> PerformLogInTryout(LoginViewModel viewModel)
        {
            if (User?.Identity.IsAuthenticated == true)
            {
                return(new LogInTryoutResult(Redirect(viewModel.ReturnUrl ?? m_returnUrlConfiguration.DefaultRedirectUrl)));
            }

            viewModel.ExternalProviders = ViewModelFactory.FindExternalProviderViewModels();

            if (!ModelState.IsValid)
            {
                return(new LogInTryoutResult(View(viewModel)));
            }

            var username = viewModel.Input.Username;

            var user = m_userManager.GetUserByConfirmedEmail(username); //check if user tried to log in with email

            if (user.Succeeded)
            {
                username = user.Result.Username;
            }

            var loginResult = await m_signInManager.PasswordSignInAsync(
                username, viewModel.Input.Password,
                viewModel.Input.RememberLogin,
                lockoutOnFailure : false
                );

            if (loginResult.RequiresTwoFactor)
            {
                return(new LogInTryoutResult(
                           RedirectToAction(
                               nameof(LoginWith2fa),
                               new { viewModel.Input.RememberLogin, viewModel.ReturnUrl }
                               ),
                           false,
                           await m_identityUserManager.FindByNameAsync(username),
                           true
                           ));
            }

            if (loginResult.Succeeded)
            {
                return(new LogInTryoutResult(
                           SuccessLogin(username, viewModel.ReturnUrl).Result,
                           true,
                           await m_identityUserManager.FindByNameAsync(username)
                           ));
            }

            await m_events.RaiseAsync(new UserLoginFailureEvent(username, "Invalid credentials"));

            ModelState.AddModelError(Translator.Translate("invalid-username-password"));

            return(new LogInTryoutResult(View(viewModel)));
        }
Example #2
0
 public Task <SignInStatus> PasswordSignInAsync(string email, string password, bool rememberMe)
 {
     return(_signInManager.PasswordSignInAsync(email, password, rememberMe, false));
 }