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; } }
public override async Task ReplaceClaimAsync(TUser user, Claim claim, Claim newClaim, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); try { await RemoveClaimsAsync(user, new[] { claim }, cancellationToken); await EnsureUserClaimsContainer(UserClaimsContainer.Create(claim, user.Id), cancellationToken); } catch (Exception e) { logger.LogError(e, $"error AddClaimsAsync user:{user} "); throw; } }
public override async Task AddClaimAsync(TRole role, Claim claim, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); try { var claimsContainer = new UserClaimsContainer { id = claim.GetId(), Payload = claim }.AddRefs <UserClaimsContainer, Claim>(role.Id); await EnsureUserClaimsContainer(claimsContainer, cancellationToken); } catch (Exception e) { logger.LogError(e, $"error AddClaimsAsync role:{role} "); throw; } }
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; } }