Esempio n. 1
0
        /// <summary>
        /// 获取当前用户实例的所有声明列表。
        /// </summary>
        /// <param name="user">用户实例对象。</param>
        /// <param name="cancellationToken">取消标志。</param>
        /// <returns>返回当前用户实例的所有声明列表。</returns>
        public override async Task <IList <Claim> > GetClaimsAsync(TUser user, CancellationToken cancellationToken = default)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            var claims = await UserClaimContext.FetchAsync(x => x.UserId == user.Id, cancellationToken);

            return(claims.Select(x => x.ToClaim()).ToList());
        }
Esempio n. 2
0
 /// <summary>
 /// 替换用户声明。
 /// </summary>
 /// <param name="user">当前用户实例对象。</param>
 /// <param name="claim">声明实例对象。</param>
 /// <param name="newClaim">新的声明实例对象。</param>
 /// <param name="cancellationToken">取消标志。</param>
 public override async Task ReplaceClaimAsync(TUser user, Claim claim, Claim newClaim,
                                              CancellationToken cancellationToken = default)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     if (claim == null)
     {
         throw new ArgumentNullException(nameof(claim));
     }
     if (newClaim == null)
     {
         throw new ArgumentNullException(nameof(newClaim));
     }
     await UserClaimContext.UpdateAsync(
         uc => uc.UserId == user.Id && uc.ClaimValue == claim.Value && uc.ClaimType == claim.Type,
         new { ClaimType = newClaim.Type, ClaimValue = newClaim.Value }, cancellationToken);
 }
Esempio n. 3
0
 /// <summary>
 /// 添加用户声明。
 /// </summary>
 /// <param name="user">当前用户实例对象。</param>
 /// <param name="claims">声明列表。</param>
 /// <param name="cancellationToken">取消标志。</param>
 public override async Task AddClaimsAsync(TUser user, IEnumerable <Claim> claims, CancellationToken cancellationToken = default)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     if (claims == null)
     {
         throw new ArgumentNullException(nameof(claims));
     }
     await UserClaimContext.BeginTransactionAsync(async db =>
     {
         foreach (var claim in claims)
         {
             var dbClaim = CreateUserClaim(user, claim);
             await db.CreateAsync(dbClaim, cancellationToken);
         }
         return(true);
     }, cancellationToken : cancellationToken);
 }
Esempio n. 4
0
 /// <summary>
 /// 移除用户声明。
 /// </summary>
 /// <param name="user">用户实例。</param>
 /// <param name="claims">声明列表。</param>
 /// <param name="cancellationToken">取消标志。</param>
 public override async Task RemoveClaimsAsync(TUser user, IEnumerable <Claim> claims,
                                              CancellationToken cancellationToken = default)
 {
     if (user == null)
     {
         throw new ArgumentNullException(nameof(user));
     }
     if (claims == null)
     {
         throw new ArgumentNullException(nameof(claims));
     }
     await UserClaimContext.BeginTransactionAsync(async db =>
     {
         foreach (var claim in claims)
         {
             await db.DeleteAsync(
                 uc => uc.UserId == user.Id && uc.ClaimType == claim.Type && uc.ClaimValue == claim.Value, cancellationToken);
         }
         return(true);
     }, cancellationToken : cancellationToken);
 }