예제 #1
0
        public PageData <EntityRoleOutputDto> Read(PageRequest request)
        {
            Expression <Func <EntityRole, bool> > predicate = _filterService.GetExpression <EntityRole>(request.FilterGroup);

            if (request.PageCondition.SortConditions.Length == 0)
            {
                request.PageCondition.SortConditions = new[]
                {
                    new SortCondition("RoleId"),
                    new SortCondition("EntityId"),
                    new SortCondition("Operation")
                };
            }
            RoleManager <Role>      roleManager = HttpContext.RequestServices.GetService <RoleManager <Role> >();
            Func <EntityRole, bool> updateFunc  = _filterService.GetDataFilterExpression <EntityRole>(null, DataAuthOperation.Update).Compile();
            Func <EntityRole, bool> deleteFunc  = _filterService.GetDataFilterExpression <EntityRole>(null, DataAuthOperation.Delete).Compile();
            var page = _securityManager.EntityRoles.ToPage(predicate,
                                                           request.PageCondition,
                                                           m => new
            {
                D          = m,
                RoleName   = roleManager.Roles.First(n => n.Id == m.RoleId).Name,
                EntityName = m.EntityInfo.Name,
                EntityType = m.EntityInfo.TypeName,
            }).ToPageResult(data => data.Select(m => new EntityRoleOutputDto(m.D)
            {
                RoleName   = m.RoleName,
                EntityName = m.EntityName,
                EntityType = m.EntityType,
                Updatable  = updateFunc(m.D),
                Deletable  = deleteFunc(m.D)
            }).ToArray());

            return(page.ToPageData());
        }
예제 #2
0
        public PageData <UserOutputDto> Read(PageRequest request)
        {
            Check.NotNull(request, nameof(request));
            IFunction function = this.GetExecuteFunction();

            Func <User, bool> updateFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Update).Compile();
            Func <User, bool> deleteFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Delete).Compile();
            Expression <Func <User, bool> > predicate = _filterService.GetExpression <User>(request.FilterGroup);

            //查询某一角色的所有用户
            //var roleId = request.FilterGroup.Rules.FirstOrDefault(m => m.Field == "RoleId")?.CastTo(0);
            //if (roleId != 0)
            //{
            //    predicate = predicate.And(m => m.UserRoles.Any(n => n.RoleId == roleId));
            //}

            var page = _userManager.Users.ToPage(predicate, request.PageCondition, m => new
            {
                D     = m,
                Roles = m.UserRoles.Select(n => n.Role.Name)
            }).ToPageResult(data => data.Select(m => new UserOutputDto(m.D)
            {
                Roles     = m.Roles.ToArray(),
                Updatable = updateFunc(m.D),
                Deletable = deleteFunc(m.D)
            }).ToArray());


            return(page.ToPageData());
        }
        public PageData<UserOutputDto> Read(PageRequest request)
        {
            Check.NotNull(request, nameof(request));
            IFunction function = this.GetExecuteFunction();

            Func<User, bool> updateFunc = _filterService.GetDataFilterExpression<User>(null, DataAuthOperation.Update).Compile();
            Func<User, bool> deleteFunc = _filterService.GetDataFilterExpression<User>(null, DataAuthOperation.Delete).Compile();
            Expression<Func<User, bool>> predicate = _filterService.GetExpression<User>(request.FilterGroup);
            var page = _cacheService.ToPageCache(_userManager.Users, predicate, request.PageCondition, m => new
            {
                D = m,
                Roles = m.UserRoles.Select(n => n.Role.Name)
            }, function).ToPageResult(data => data.Select(m => new UserOutputDto(m.D)
            {
                Roles = m.Roles.ToArray(),
                Updatable = updateFunc(m.D),
                Deletable = deleteFunc(m.D)
            }).ToArray());
            return page.ToPageData();
        }
예제 #4
0
        public AjaxResult Read(PageRequest request)
        {
            Expression <Func <UserRole, bool> > predicate = _filterService.GetExpression <UserRole>(request.FilterGroup);
            Func <UserRole, bool> updateFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Update).Compile();
            Func <UserRole, bool> deleteFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Delete).Compile();

            PageResult <UserRoleOutputDto> page = _identityContract.UserRoles.ToPage(predicate, request.PageCondition, m => new
            {
                D        = m,
                UserName = m.User.UserName,
                RoleName = m.Role.Name,
            }).ToPageResult(data => data.Select(m => new UserRoleOutputDto(m.D)
            {
                UserName  = m.UserName,
                RoleName  = m.RoleName,
                Updatable = updateFunc(m.D),
                Deletable = deleteFunc(m.D)
            }).ToArray());

            return(new AjaxResult("数据读取成功", AjaxResultType.Success, page.ToPageData()));
        }
예제 #5
0
        public PageData <UserRoleOutputDto> Read(PageRequest request)
        {
            Expression <Func <UserRole, bool> > predicate = _filterService.GetExpression <UserRole>(request.FilterGroup);
            Func <UserRole, bool> updateFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Update).Compile();
            Func <UserRole, bool> deleteFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Delete).Compile();

            PageResult <UserRoleOutputDto> page = _identityContract.UserRoles.ToPage(predicate, request.PageCondition, m => new
            {
                D        = m,
                UserName = _identityContract.Users.Where(n => n.Id == m.UserId).Select(n => n.UserName).FirstOrDefault(),
                RoleName = _identityContract.Roles.Where(n => n.Id == m.RoleId).Select(n => n.Name).FirstOrDefault()
            }).ToPageResult(data => data.Select(m => new UserRoleOutputDto(m.D)
            {
                UserName  = m.UserName,
                RoleName  = m.RoleName,
                Updatable = updateFunc(m.D),
                Deletable = deleteFunc(m.D)
            }).ToArray());

            return(page.ToPageData());
        }
예제 #6
0
        public PageData <UserOutputDto> Read(PageRequest request)
        {
            Check.NotNull(request, nameof(request));
            IFunction function = this.GetExecuteFunction();

            Func <User, bool> updateFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Update).Compile();
            Func <User, bool> deleteFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Delete).Compile();
            Expression <Func <User, bool> > predicate = _filterService.GetExpression <User>(request.FilterGroup);
            var page = _cacheService.ToPageCache(_userManager.Users, predicate, request.PageCondition, m => new
            {
                D     = m,
                Roles = _identityContract.UserRoles.Where(n => !n.IsLocked && n.UserId == m.Id)
                        .SelectMany(n => _identityContract.Roles.Where(o => o.Id == n.RoleId).Select(o => o.Name)).Distinct().ToArray()
            }, function).ToPageResult(data => data.Select(m => new UserOutputDto(m.D)
            {
                Roles     = m.Roles,
                Updatable = updateFunc(m.D),
                Deletable = deleteFunc(m.D)
            }).ToArray());

            return(page.ToPageData());
        }
예제 #7
0
        /// <summary>
        /// 将数据源映射为指定<typeparamref name="TOutputDto"/>的集合,
        /// 并验证数据的<see cref="DataAuthOperation.Update"/>,<see cref="DataAuthOperation.Delete"/>数据权限状态
        /// </summary>
        /// <param name="source">数据源</param>
        /// <param name="getKey">是否应用于获取缓存键时</param>
        public static IQueryable <TOutputDto> ToOutput <TEntity, TOutputDto>(this IQueryable <TEntity> source, bool getKey = false)
        {
            if (!typeof(TOutputDto).IsBaseOn <IDataAuthEnabled>() || getKey)
            {
                return(MapperExtensions.ToOutput <TEntity, TOutputDto>(source));
            }

            List <TEntity>       entities      = source.ToList();
            List <TOutputDto>    dtos          = new List <TOutputDto>();
            IFilterService       filterService = ServiceLocator.Instance.GetService <IFilterService>();
            Func <TEntity, bool> updateFunc    = filterService.GetDataFilterExpression <TEntity>(null, DataAuthOperation.Update).Compile();
            Func <TEntity, bool> deleteFunc    = filterService.GetDataFilterExpression <TEntity>(null, DataAuthOperation.Delete).Compile();

            foreach (TEntity entity in entities)
            {
                TOutputDto       dto  = entity.MapTo <TOutputDto>();
                IDataAuthEnabled dto2 = (IDataAuthEnabled)dto;
                dto2.Updatable = updateFunc(entity);
                dto2.Deletable = deleteFunc(entity);
                dtos.Add(dto);
            }
            return(dtos.AsQueryable());
        }