Browse Source

feat(data-protection): 增加客户端数据规则主体

pull/1013/head
colin 1 year ago
parent
commit
39c0ce7253
  1. 30
      aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection.Abstractions/LINGYUN/Abp/DataProtection/DataAccessFilterOperate.cs
  2. 7
      aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/AbpDataProtectionModule.cs
  3. 43
      aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/Subjects/DataAccessClientIdContributor.cs

30
aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection.Abstractions/LINGYUN/Abp/DataProtection/DataAccessFilterOperate.cs

@ -6,64 +6,54 @@ namespace LINGYUN.Abp.DataProtection;
/// </summary> /// </summary>
public enum DataAccessFilterOperate public enum DataAccessFilterOperate
{ {
/// <summary>
/// 且
/// </summary>
[Description("且")]
And = 1,
/// <summary>
/// 或
/// </summary>
[Description("或")]
Or = 2,
/// <summary> /// <summary>
/// 等于 /// 等于
/// </summary> /// </summary>
[Description("等于")] [Description("等于")]
Equal = 3, Equal = 1,
/// <summary> /// <summary>
/// 不等于 /// 不等于
/// </summary> /// </summary>
[Description("不等于")] [Description("不等于")]
NotEqual = 4, NotEqual = 2,
/// <summary> /// <summary>
/// 小于 /// 小于
/// </summary> /// </summary>
[Description("小于")] [Description("小于")]
Less = 5, Less = 3,
/// <summary> /// <summary>
/// 小于或等于 /// 小于或等于
/// </summary> /// </summary>
[Description("小于等于")] [Description("小于等于")]
LessOrEqual = 6, LessOrEqual = 4,
/// <summary> /// <summary>
/// 大于 /// 大于
/// </summary> /// </summary>
[Description("大于")] [Description("大于")]
Greater = 7, Greater = 5,
/// <summary> /// <summary>
/// 大于或等于 /// 大于或等于
/// </summary> /// </summary>
[Description("大于等于")] [Description("大于等于")]
GreaterOrEqual = 8, GreaterOrEqual = 6,
/// <summary> /// <summary>
/// 左包含 /// 左包含
/// </summary> /// </summary>
[Description("左包含")] [Description("左包含")]
StartsWith = 9, StartsWith = 7,
/// <summary> /// <summary>
/// 右包含 /// 右包含
/// </summary> /// </summary>
[Description("右包含")] [Description("右包含")]
EndsWith = 10, EndsWith = 8,
/// <summary> /// <summary>
/// 包含 /// 包含
/// </summary> /// </summary>
[Description("包含")] [Description("包含")]
Contains = 11, Contains = 9,
/// <summary> /// <summary>
/// 不包含 /// 不包含
/// </summary> /// </summary>
[Description("不包含")] [Description("不包含")]
NotContains = 12, NotContains = 10,
} }

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

@ -4,7 +4,7 @@ using LINGYUN.Abp.DataProtection.Operations;
using LINGYUN.Abp.DataProtection.Subjects; using LINGYUN.Abp.DataProtection.Subjects;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Domain; using Volo.Abp.Domain;
using Volo.Abp.Localization; using Volo.Abp.Localization.ExceptionHandling;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
namespace LINGYUN.Abp.DataProtection; namespace LINGYUN.Abp.DataProtection;
@ -37,13 +37,14 @@ public class AbpDataProtectionModule : AbpModule
options.OperateContributors.Add(DataAccessFilterOperate.NotContains, new DataAccessNotContainsContributor()); options.OperateContributors.Add(DataAccessFilterOperate.NotContains, new DataAccessNotContainsContributor());
options.SubjectContributors.Add(new DataAccessUserIdContributor()); options.SubjectContributors.Add(new DataAccessUserIdContributor());
options.SubjectContributors.Add(new DataAccessClientIdContributor());
options.SubjectContributors.Add(new DataAccessRoleNameContributor()); options.SubjectContributors.Add(new DataAccessRoleNameContributor());
options.SubjectContributors.Add(new DataAccessOrganizationUnitContributor()); options.SubjectContributors.Add(new DataAccessOrganizationUnitContributor());
}); });
Configure<AbpLocalizationOptions>(options => Configure<AbpExceptionLocalizationOptions>(options =>
{ {
options.Resources.Add<DataProtectionResource>(); options.MapCodeNamespace("DataProtection", typeof(DataProtectionResource));
}); });
} }
} }

43
aspnet-core/framework/data-protection/LINGYUN.Abp.DataProtection/LINGYUN/Abp/DataProtection/Subjects/DataAccessClientIdContributor.cs

@ -0,0 +1,43 @@
using Microsoft.Extensions.DependencyInjection;
using System.Collections.Generic;
using System.Linq;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Clients;
namespace LINGYUN.Abp.DataProtection.Subjects;
public class DataAccessClientIdContributor : IDataAccessSubjectContributor
{
public string Name => ClientPermissionValueProvider.ProviderName;
public virtual List<string> GetAllowProperties(DataAccessSubjectContributorContext context)
{
var allowProperties = new List<string>();
var currentClient = context.ServiceProvider.GetRequiredService<ICurrentClient>();
if (currentClient.IsAuthenticated)
{
var resourceStore = context.ServiceProvider.GetRequiredService<IDataProtectedResourceStore>();
var resource = resourceStore.Get(Name, currentClient.Id, context.EntityTypeFullName, context.Operation);
if (resource?.AllowProperties.Any() == true)
{
allowProperties.AddIfNotContains(resource.AllowProperties);
}
}
return allowProperties;
}
public virtual List<DataAccessFilterGroup> GetFilterGroups(DataAccessSubjectContributorContext context)
{
var groups = new List<DataAccessFilterGroup>();
var currentClient = context.ServiceProvider.GetRequiredService<ICurrentClient>();
if (currentClient.IsAuthenticated)
{
var resourceStore = context.ServiceProvider.GetRequiredService<IDataProtectedResourceStore>();
var resource = resourceStore.Get(Name, currentClient.Id, context.EntityTypeFullName, context.Operation);
if (resource?.FilterGroup != null)
{
groups.Add(resource.FilterGroup);
}
}
return groups;
}
}
Loading…
Cancel
Save