示例#1
0
    public async Task <IActionResult> ValidateAndSaveSetup(
        string providerName,
        string secret,
        string code,
        string?returnUrl = null)
    {
        MemberIdentityUser?member = await _memberManager.GetCurrentMemberAsync();

        var isValid = _twoFactorLoginService.ValidateTwoFactorSetup(providerName, secret, code);

        if (member is null || isValid == false)
        {
            ModelState.AddModelError(nameof(code), "Invalid Code");

            return(CurrentUmbracoPage());
        }

        var twoFactorLogin = new TwoFactorLogin
        {
            Confirmed = true, Secret = secret, UserOrMemberKey = member.Key, ProviderName = providerName,
        };

        await _twoFactorLoginService.SaveAsync(twoFactorLogin);

        return(RedirectToLocal(returnUrl));
    }
示例#2
0
    public async Task <bool> ValidateAndSaveAsync(string providerName, Guid userOrMemberKey, string secret, string code)
    {
        try
        {
            var isValid = ValidateTwoFactorSetup(providerName, secret, code);
            if (isValid == false)
            {
                return(false);
            }

            var twoFactorLogin = new TwoFactorLogin
            {
                Confirmed       = true,
                Secret          = secret,
                UserOrMemberKey = userOrMemberKey,
                ProviderName    = providerName,
            };

            await SaveAsync(twoFactorLogin);

            return(true);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Could not log in with the provided one-time-password");
        }

        return(false);
    }