示例#1
0
        public async Task ReplaceClaimAsync(TApplication application, Claim oldClaim, Claim newClaim, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (application == null)
            {
                throw new ArgumentNullException(nameof(application));
            }
            if (oldClaim == null)
            {
                throw new ArgumentNullException(nameof(oldClaim));
            }
            if (newClaim == null)
            {
                throw new ArgumentNullException(nameof(newClaim));
            }

            var matchedClaims = await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id) && ac.ClaimValue == oldClaim.Value && ac.ClaimType == oldClaim.Type).ToListAsync(cancellationToken);

            foreach (var matchedClaim in matchedClaims)
            {
                matchedClaim.ClaimValue = newClaim.Value;
                matchedClaim.ClaimType  = newClaim.Type;
            }
        }
示例#2
0
        public async Task <IList <Claim> > GetClaimsAsync(TApplication application, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (application == null)
            {
                throw new ArgumentNullException(nameof(application));
            }

            return(await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id)).Select(c => c.ToClaim()).ToListAsync(cancellationToken));
        }
示例#3
0
        public async Task RemoveClaimsAsync(TApplication application, IEnumerable <Claim> claims, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (application == null)
            {
                throw new ArgumentNullException(nameof(application));
            }
            if (claims == null)
            {
                throw new ArgumentNullException(nameof(claims));
            }
            foreach (var claim in claims)
            {
                var matchedClaims = await ApplicationClaims.Where(ac => ac.ApplicationId.Equals(application.Id) && ac.ClaimValue == claim.Value && ac.ClaimType == claim.Type).ToListAsync(cancellationToken);

                foreach (var c in matchedClaims)
                {
                    ApplicationClaims.Remove(c);
                }
            }
        }