Exemplo n.º 1
0
        public async Task <IActionResult> PostEnableAuthenticator(EnableAuthenticatorRequest request, string userId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _authService.PostEnableAuthenticatorModel(request, userId);

            return(Ok(result));
        }
        public async Task <ActionResult> EnableAuthenticator([FromBody] EnableAuthenticatorRequest request)
        {
            var credentialsValidationResult = await _accountService.CheckCredentials(request.Username, request.Password);

            if (!credentialsValidationResult.Success)
            {
                return(BadRequest());
            }
            var response = await _accountService.EnableAuthenticator(request, credentialsValidationResult.Model.Id);

            return(FromResponse(response));
        }
Exemplo n.º 3
0
 public Task <Response> EnableAuthenticator(EnableAuthenticatorRequest request, string userId)
 {
     return(Task.FromResult(Response.ForError("")));
 }
        public async Task <EnableAuthenticatorViewModel> PostEnableAuthenticatorModel(EnableAuthenticatorRequest request, string userid)
        {
            var user = await _userManager.FindByIdAsync(userid.ToString());

            if (user == null)
            {
                throw new Exception("Không thể tải người dùng có ID.");
            }

            //if (!ModelState.IsValid)
            //{
            //    await LoadSharedKeyAndQrCodeUriAsync(user);
            //    return Page();
            //}

            var result = new EnableAuthenticatorViewModel();
            // Strip spaces and hypens
            var verificationCode = request.Input.Code.Replace(" ", string.Empty).Replace("-", string.Empty);

            var is2faTokenValid = await _userManager.VerifyTwoFactorTokenAsync(
                user, _userManager.Options.Tokens.AuthenticatorTokenProvider, verificationCode);

            if (!is2faTokenValid)
            {
                await LoadSharedKeyAndQrCodeUriAsync(userid);

                throw new Exception("Mã xác minh không hợp lệ.");
            }

            await _userManager.SetTwoFactorEnabledAsync(user, true);

            var userId = await _userManager.GetUserIdAsync(user);

            _logger.LogInformation("Người dùng đã bật 2FA với một ứng dụng xác thực.", userId);

            result.StatusMessage = "Ứng dụng xác thực của bạn đã được xác minh.";

            if (await _userManager.CountRecoveryCodesAsync(user) == 0)
            {
                var recoveryCodes = await _userManager.GenerateNewTwoFactorRecoveryCodesAsync(user, 10);

                result.RecoveryCodes = recoveryCodes.ToArray();

                //return {Show Recovery Codes}
                return(result);
            }
            else
            {
                //success
                return(result);
            }
        }