Example #1
0
        public async Task <IActionResult> LoginWith2Fa()
        {
            if (this.User.Identity.IsAuthenticated)
            {
                return(this.AdminDashboardActionResult);
            }

            var user = await this.userManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null || !(await this.userClaimsService.CheckUserForAccessAdministrationPermissionAsync(user.Email)))
            {
                return(this.NotFound());
            }

            AdminLoginWith2FaViewModel model = new AdminLoginWith2FaViewModel();

            return(this.View(model));
        }
Example #2
0
        public async Task <IActionResult> LoginWith2Fa(AdminLoginWith2FaViewModel model)
        {
            if (this.User.Identity.IsAuthenticated)
            {
                return(this.AdminDashboardActionResult);
            }

            try
            {
                var user = await this.userManager.GetTwoFactorAuthenticationUserAsync();

                if (user == null || !(await this.userClaimsService.CheckUserForAccessAdministrationPermissionAsync(user.Email)))
                {
                    return(this.NotFound());
                }

                var requestResult = await this.Mediator.Send(new LoginWithTwoFactorAuthenticationCommand(user, model.TwoFactorCode));

                if (requestResult.Result.Succeeded)
                {
                    await this.SignInAsync(requestResult.User);

                    return(this.AdminDashboardActionResult);
                }
                else if (requestResult.Result.IsLockedOut)
                {
                    return(this.Lockout);
                }
            }
            catch (ValidationException ex)
            {
                this.ModelState.ApplyValidationException(ex, true);
            }
            catch (Exception ex)
            {
                await this.Logger.LogErrorAsync(ex);
            }

            return(this.View(model));
        }