コード例 #1
0
        public async IAsyncEnumerable <bool> UserEdit(AppUserVM appUserVM)
        {
            yield return(await HubHelper.WrapAsync(_logger, async() =>
            {
                var user = await _userManager.FindByIdAsync(appUserVM.Id);
                if (user == default)
                {
                    throw new HubException("User does not exist");
                }

                HubHelper.Validate(appUserVM);

                var nameClaim = (await _userManager.GetClaimsAsync(user))
                                .FirstOrDefault(m => m.Type == JwtClaimTypes.Name);

                if (nameClaim == null || appUserVM.Name != nameClaim.Value)
                {
                    var newNameClaim = new Claim(JwtClaimTypes.Name, appUserVM.Name);
                    if (nameClaim == null)
                    {
                        await _userManager.AddClaimAsync(user, newNameClaim);
                    }
                    else
                    {
                        await _userManager.ReplaceClaimAsync(user, nameClaim, newNameClaim);
                    }
                }

                return true;
            }));
コード例 #2
0
        public async IAsyncEnumerable <ListResponse <AppUserVM> > UserList(
            AppUserFilter filter,
            AppUserSort sort,
            Paginate paginate)
        {
            yield return(await HubHelper.WrapAsync(_logger, async() =>
            {
                IQueryable <AppUser> query = _db.Users
                                             .Include(m => m.UserClaims)
                                             .Include(m => m.UserRoles)
                                             .ThenInclude(m => m.Role);

                switch (sort)
                {
                case AppUserSort.EmailAsc:
                    query = query.OrderBy(m => m.Email);
                    break;

                case AppUserSort.EmailDesc:
                    query = query.OrderByDescending(m => m.Email);
                    break;
                }

                if (!string.IsNullOrEmpty(filter.Email))
                {
                    query = query.Where(m => EF.Functions.ILike(m.Email, $"%{filter.Email}%"));
                }

                return await PaginationHelper.FromQueryAsync <AppUser, AppUserVM>(paginate, query);
            }));
        }