Browse Source

Merge pull request #1033 from colinin/data-protected-entity-default-filter

feat(data-protected): added the default filtering configuration for e…
pull/1043/head
yx lin 1 year ago
committed by GitHub
parent
commit
e23b3db872
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 12
      aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/AbpDataProtectionOptions.cs
  2. 7
      aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/EntityTypeFilterBuilder.cs

12
aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/AbpDataProtectionOptions.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq.Expressions;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
@ -16,15 +17,19 @@ public class AbpDataProtectionOptions
/// <summary> /// <summary>
/// 权限主体 /// 权限主体
/// </summary> /// </summary>
public IList<IDataAccessSubjectContributor> SubjectContributors { get; set; } public IList<IDataAccessSubjectContributor> SubjectContributors { get; }
/// <summary> /// <summary>
/// 过滤字段关键字 /// 过滤字段关键字
/// </summary> /// </summary>
public IDictionary<string, IDataAccessKeywordContributor> KeywordContributors { get; set; } public IDictionary<string, IDataAccessKeywordContributor> KeywordContributors { get; }
/// <summary> /// <summary>
/// 数据操作 /// 数据操作
/// </summary> /// </summary>
public IDictionary<DataAccessFilterOperate, IDataAccessOperateContributor> OperateContributors { get; set; } public IDictionary<DataAccessFilterOperate, IDataAccessOperateContributor> OperateContributors { get; }
/// <summary>
/// 默认实体过滤
/// </summary>
public IDictionary<Type, Func<IServiceProvider, Type, DataAccessOperation, LambdaExpression>> DefaultEntityFilters { get; }
/// <summary> /// <summary>
/// 忽略审计字段列表 /// 忽略审计字段列表
/// </summary> /// </summary>
@ -35,6 +40,7 @@ public class AbpDataProtectionOptions
SubjectContributors = new List<IDataAccessSubjectContributor>(); SubjectContributors = new List<IDataAccessSubjectContributor>();
KeywordContributors = new Dictionary<string, IDataAccessKeywordContributor>(); KeywordContributors = new Dictionary<string, IDataAccessKeywordContributor>();
OperateContributors = new Dictionary<DataAccessFilterOperate, IDataAccessOperateContributor>(); OperateContributors = new Dictionary<DataAccessFilterOperate, IDataAccessOperateContributor>();
DefaultEntityFilters = new Dictionary<Type, Func<IServiceProvider, Type, DataAccessOperation, LambdaExpression>>();
IgnoreAuditedProperties = new List<string> IgnoreAuditedProperties = new List<string>
{ {

7
aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/EntityTypeFilterBuilder.cs

@ -61,6 +61,13 @@ public class EntityTypeFilterBuilder : IEntityTypeFilterBuilder, ITransientDepen
} }
LambdaExpression subExp = null; LambdaExpression subExp = null;
if (subjectFilterGroups.Count == 0 &&
_options.DefaultEntityFilters.TryGetValue(entityType, out var filterFunc))
{
subExp = filterFunc(_serviceProvider, entityType, operation);
}
foreach (var subGroup in subjectFilterGroups) foreach (var subGroup in subjectFilterGroups)
{ {
subExp = subExp == null ? GetExpression(entityType, subGroup) : subExp.OrElse(func, GetExpression(entityType, subGroup)); subExp = subExp == null ? GetExpression(entityType, subGroup) : subExp.OrElse(func, GetExpression(entityType, subGroup));

Loading…
Cancel
Save