public async Task <CacheItem> ExecuteAsync(JwtContainer jwtContainer, CacheItem relatedItem) { var userData = _jwtService.GetDataFromJwt <UserProfileData>(jwtContainer.Jwt).Data; await _recoveryHandler.RemoveConnectionsAsync(userData.PublicKey); // TODO: remove? classic flow if (!_coreConfiguration.OverwriteFields) { userData.Profile = null; } // TODO: code duplication var recoveryToken = !string.IsNullOrEmpty(userData.RecoveryData) ? Guid.NewGuid().ToString("N") : null; await _recoveryHandler.OnRecoverAsync(userData.DID, new OwnIdConnection { PublicKey = userData.PublicKey, RecoveryToken = recoveryToken, RecoveryData = userData.RecoveryData, AuthType = relatedItem.AuthCookieType == CookieType.Passcode ? ConnectionAuthType.Passcode : ConnectionAuthType.Basic }); return(await _cacheItemRepository.UpdateAsync(relatedItem.Context, item => { item.RecoveryToken = recoveryToken; item.RecoveryData = userData.RecoveryData; item.FinishFlow(relatedItem.DID, userData.PublicKey); })); }
protected override async Task <CacheItem> ProcessFido2RegisterResponseAsync(CacheItem relatedItem, string publicKey, uint signatureCounter, string credentialId) { await _recoveryHandler.OnRecoverAsync(relatedItem.DID, new OwnIdConnection { PublicKey = publicKey, Fido2CredentialId = credentialId, Fido2SignatureCounter = signatureCounter.ToString(), AuthType = ConnectionAuthType.Fido2 }); return(await CacheItemRepository.UpdateAsync(relatedItem.Context, item => { item.FinishFlow(relatedItem.DID, publicKey); item.Fido2CredentialId = credentialId; })); }