internal async Task <UserClaimsContainer> EnsureUserClaimsContainer(UserClaimsContainer userClaimsContainer, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); try { var enureIdExist = userClaimsContainer.Payload.GetId(); var ucc = await identityDocumentStore.IdentitySession <UserClaimsContainer>(async session => await session.LoadAsync <UserClaimsContainer>(enureIdExist)); if (ucc == null) { await StoreUserClaimsContainer(userClaimsContainer.SetId <UserClaimsContainer, Claim>(enureIdExist), cancellationToken); return(await EnsureUserClaimsContainer(userClaimsContainer, cancellationToken)); } return(ucc); } catch (Exception e) { logger.LogError(e, $"error EnsureUserClaimsContainer user:{userClaimsContainer} "); throw; } }
internal async Task StoreUserClaimsContainer(UserClaimsContainer userClaimsContainer, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); try { var normalizedId = userClaimsContainer.Payload.GetId(); await identityDocumentStore.IdentitySession(async session => await session.StoreAsync(userClaimsContainer.SetId <UserClaimsContainer, Claim>(normalizedId), normalizedId, cancellationToken)); } catch (Exception e) { logger.LogError(e, $"error StoreUserClaimsContainer user:{userClaimsContainer} "); throw; } }