示例#1
0
 /// <summary>
 /// 获取用户角色列表。
 /// </summary>
 /// <param name="userId">用户Id。</param>
 /// <returns>返回角色列表。</returns>
 public virtual IEnumerable <TRole> GetRoles(int userId)
 {
     return(RoleContext.AsQueryable()
            .Select()
            .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId)
            .Where <TUserRole>(x => x.UserId == userId)
            .AsEnumerable());
 }
示例#2
0
 /// <summary>
 /// 获取用户角色列表。
 /// </summary>
 /// <param name="userId">用户Id。</param>
 /// <param name="cancellationToken">取消标识。</param>
 /// <returns>返回角色列表。</returns>
 public virtual Task <IEnumerable <TRole> > GetRolesAsync(int userId, CancellationToken cancellationToken = default)
 {
     return(RoleContext.AsQueryable()
            .Select()
            .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId)
            .Where <TUserRole>(x => x.UserId == userId)
            .AsEnumerableAsync(cancellationToken));
 }
示例#3
0
        /// <summary>
        /// 获取用户的所有角色。
        /// </summary>
        /// <param name="user">用户实例对象。</param>
        /// <param name="cancellationToken">取消标志。</param>
        /// <returns>返回当前用户的所有角色列表。</returns>
        public override async Task <IList <string> > GetRolesAsync(TUser user, CancellationToken cancellationToken = default)
        {
            var roles = await RoleContext.AsQueryable()
                        .Select(x => x.Name)
                        .InnerJoin <TUserRole>((r, ur) => r.RoleId == ur.RoleId)
                        .Where <TUserRole>(x => x.UserId == user.UserId)
                        .AsEnumerableAsync(reader => reader.GetString(0), cancellationToken);

            return(roles.ToList());
        }