|
@@ -1,4 +1,7 @@
|
|
|
-using XF.Domain.Authentications;
|
|
|
+using Hotline.Settings;
|
|
|
+using Hotline.Share.Enums;
|
|
|
+using Org.BouncyCastle.Asn1.X509;
|
|
|
+using XF.Domain.Authentications;
|
|
|
using XF.Domain.Dependency;
|
|
|
using XF.Domain.Entities;
|
|
|
|
|
@@ -6,29 +9,57 @@ namespace Hotline.Repository.SqlSugar.DataPermissions;
|
|
|
|
|
|
public class DataPermissionManager : IDataPermissionManager, IScopeDependency
|
|
|
{
|
|
|
+ private readonly ISystemDataTableRepository _systemDataTableRepository;
|
|
|
+ private readonly ISystemDataAuthorityRepository _systemDataAuthorityRepository;
|
|
|
+
|
|
|
+ public DataPermissionManager(ISystemDataTableRepository systemDataTableRepository,ISystemDataAuthorityRepository systemDataAuthorityRepository)
|
|
|
+ {
|
|
|
+ _systemDataTableRepository = systemDataTableRepository;
|
|
|
+ _systemDataAuthorityRepository = systemDataAuthorityRepository;
|
|
|
+ }
|
|
|
+
|
|
|
public DataPermissionScheme GetQueryFilter<TEntity>(ISessionContext sessionContext) where TEntity : class, IEntity<string>, IDataPermission, new()
|
|
|
{
|
|
|
- EQueryFilter? queryFilter = GetCurrentQueryFilter(sessionContext.Roles, typeof(TEntity).Name);
|
|
|
+ EAuthorityType? queryFilter = GetCurrentQueryFilter(sessionContext.Roles, typeof(TEntity).Name);
|
|
|
if (queryFilter == null)
|
|
|
{
|
|
|
+
|
|
|
//todo 未配置数据查询权限处理方案
|
|
|
+ //TODO 不处理
|
|
|
}
|
|
|
|
|
|
- if (queryFilter == EQueryFilter.CreatorOnly)
|
|
|
- return new DataPermissionScheme(EQueryFilter.CreatorOnly);
|
|
|
+ //全部
|
|
|
+ if (queryFilter == EAuthorityType.All)
|
|
|
+ return new DataPermissionScheme(EAuthorityType.All);
|
|
|
+
|
|
|
+ //本部
|
|
|
+ if (queryFilter == EAuthorityType.Org)
|
|
|
+ return new DataPermissionScheme(EAuthorityType.Org);
|
|
|
|
|
|
- if (queryFilter == EQueryFilter.SelfAndSubDepartment)
|
|
|
+ //本部及本部以下
|
|
|
+ if (queryFilter == EAuthorityType.OrgAndBelow)
|
|
|
{
|
|
|
//todo 查询对应部门编码
|
|
|
-
|
|
|
- return new DataPermissionScheme(EQueryFilter.SelfAndSubDepartment, "");
|
|
|
+ return new DataPermissionScheme(EAuthorityType.OrgAndBelow, "");
|
|
|
}
|
|
|
|
|
|
+ //创建人
|
|
|
+ if (queryFilter == EAuthorityType.Create)
|
|
|
+ return new DataPermissionScheme(EAuthorityType.Create);
|
|
|
+
|
|
|
throw new NotImplementedException();
|
|
|
}
|
|
|
|
|
|
- private EQueryFilter? GetCurrentQueryFilter(string[] roles, string entityName)
|
|
|
+ private EAuthorityType? GetCurrentQueryFilter(string[] roles, string entityName)
|
|
|
{
|
|
|
- throw new NotImplementedException();
|
|
|
+ //查询对应表配置
|
|
|
+ var tableModel = _systemDataTableRepository.GetAsync(x => x.EntityName == entityName).Result;
|
|
|
+ //查询表对应数据权限
|
|
|
+ var authList = _systemDataAuthorityRepository.QueryExtAsync(x => roles.Contains(x.RoleCode),null,x=>x.OrderBy(d=>d.AuthorityType)).Result;
|
|
|
+ if (authList!=null && authList.Count>0)
|
|
|
+ {
|
|
|
+ return (EAuthorityType)authList[0].AuthorityType;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|