Skip to content

Commit e771b84

Browse files
committed
更新权限管理和数据种子贡献者代码
1 parent 257f84b commit e771b84

File tree

4 files changed

+46
-22
lines changed

4 files changed

+46
-22
lines changed

src/LinCms.Application/Cms/Permissions/PermissionService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
namespace LinCms.Cms.Permissions;
1515

1616
public class PermissionService(IAuditBaseRepository<LinPermission, long> permissionRepository,
17-
IAuditBaseRepository<LinGroupPermission, long> groupPermissionRepository, ICurrentUser currentUser)
17+
IAuditBaseRepository<LinGroupPermission, long> groupPermissionRepository)
1818
: ApplicationService, IPermissionService
1919
{
20-
private readonly ICurrentUser _currentUser = currentUser;
2120

2221
public async Task<List<PermissionTreeNode>> GetPermissionTreeNodes()
2322
{

src/LinCms.Core/Data/PermissionDefinition.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ namespace LinCms.Data
44
{
55
public class PermissionDefinition(string permission, string module, string router)
66
{
7-
public string Permission { get; } = permission ?? throw new ArgumentNullException(nameof(permission));
8-
public string Module { get; } = module ?? throw new ArgumentNullException(nameof(module));
9-
public string Router { get; } = router ?? throw new ArgumentNullException(nameof(router));
7+
public string Permission { get; set; } = permission ?? throw new ArgumentNullException(nameof(permission));
8+
public string Module { get; set; } = module ?? throw new ArgumentNullException(nameof(module));
9+
public string Router { get; set; } = router ?? throw new ArgumentNullException(nameof(router));
1010

1111
public override string ToString()
1212
{

src/LinCms.Infrastructure/FreeSql/DataSeedContributor.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public async Task SeedPermissionAsync(List<PermissionDefinition> linCmsAttribute
7272
var permissionDefinitionsByModules = linCmsAttributes.GroupBy(r => r.Module).ToList();
7373

7474
var insertMoudles = new List<LinPermission>();
75+
var sortCode = 10;
7576
foreach (var module in permissionDefinitionsByModules)
7677
{
7778
LinPermission permissionEntity = allModules.FirstOrDefault(u => u.Name == module.Key);
@@ -81,38 +82,47 @@ public async Task SeedPermissionAsync(List<PermissionDefinition> linCmsAttribute
8182
{
8283
PermissionType = PermissionType.Folder,
8384
Name = module.Key,
84-
ParentId = 0
85+
ParentId = 0,
86+
SortCode = sortCode
8587
});
88+
sortCode += 10;
8689
}
8790
}
8891
await _permissionRepository.InsertAsync(insertMoudles, cancellationToken);
8992
#endregion
9093

9194
allModules = await _permissionRepository.Select.Where(r => r.PermissionType == PermissionType.Folder).ToListAsync(cancellationToken);
9295

96+
sortCode = 0;
9397
linCmsAttributes.ForEach(r =>
9498
{
9599
LinPermission permissionEntity = allPermissions.FirstOrDefault(u => u.Name == r.Permission);
96100

97-
var parentId = allModules.Where(u => u.Name == r.Module).First().Id;
101+
var parent = allModules.First(u => u.Name == r.Module);
102+
var parentId = parent.Id;
103+
sortCode = parent.SortCode;
98104
if (permissionEntity == null)
99105
{
100106
insertPermissions.Add(new LinPermission(r.Permission, PermissionType.Permission, r.Router)
101107
{
102-
ParentId = parentId
108+
ParentId = parentId,
109+
SortCode = sortCode
103110
});
104111
}
105112
else
106113
{
107-
bool routerExist = allPermissions.Any(u => u.Name == r.Permission && u.Router == r.Router);
114+
bool routerExist = allPermissions.Any(u => u.Name == r.Permission);
108115
if (!routerExist)
109116
{
110117
permissionEntity.Router = r.Router;
111118
permissionEntity.ParentId = parentId;
112-
permissionEntity.PermissionType = PermissionType.Permission;
119+
permissionEntity.PermissionType = PermissionType.Permission;
120+
permissionEntity.SortCode = sortCode;
113121
updatePermissions.Add(permissionEntity);
114122
}
115123
}
124+
125+
sortCode += 1;
116126
});
117127

118128
await _permissionRepository.InsertAsync(insertPermissions, cancellationToken);

src/LinCms.Web/Utils/ReflexHelper.cs

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,33 @@ public static List<PermissionDefinition> GetAssemblyLinCmsAttributes()
6969

7070
foreach (Attribute attribute in methodInfo.GetCustomAttributes())
7171
{
72-
if (attribute is LinCmsAuthorizeAttribute linAttribute && linAttribute.Permission.IsNotNullOrEmpty() && linAttribute.Module.IsNotNullOrEmpty())
72+
if (attribute is LinCmsAuthorizeAttribute linAttribute &&
73+
linAttribute.Permission.IsNotNullOrEmpty() && linAttribute.Module.IsNotNullOrEmpty())
7374
{
74-
string actionTemplate = methodAttribute.Template != null ? "/" + methodAttribute.Template + " " : " ";
75-
string router = $"{routerAttribute.Template}{actionTemplate}{methodAttribute.HttpMethods.FirstOrDefault()}";
76-
linAuths.Add(
77-
new PermissionDefinition(
78-
linAttribute.Permission,
79-
linAttribute.Module,
80-
router
81-
)
82-
);
83-
//methodInfo.Name.ToSnakeCase()
75+
string actionTemplate = methodAttribute.Template != null
76+
? "/" + methodAttribute.Template + " "
77+
: " ";
78+
string router =
79+
$"{routerAttribute.Template}{actionTemplate}{methodAttribute.HttpMethods.FirstOrDefault()}";
80+
81+
// 判断 linAuths中的权限中是否已存在,如果存在,router增加现有router值
82+
83+
if (linAuths.Any(definition => definition.Permission == linAttribute.Permission))
84+
{
85+
PermissionDefinition permissionDefinition = linAuths.First(definition => definition.Permission == linAttribute.Permission);
86+
permissionDefinition.Router += "," + router;
87+
}
88+
else
89+
{
90+
91+
linAuths.Add(
92+
new PermissionDefinition(
93+
linAttribute.Permission,
94+
linAttribute.Module,
95+
router
96+
)
97+
);
98+
}
8499
}
85100
}
86101
}
@@ -172,7 +187,7 @@ public static dynamic AuthorizationConvertToTree(List<PermissionDefinition> list
172187

173188
public static List<IDictionary<string, object>> AuthsConvertToTree(List<LinPermission> listAuths)
174189
{
175-
var groupAuths = listAuths.Where(r=>r.PermissionType==PermissionType.Folder).GroupBy(r => r.Name).Select(r => new
190+
var groupAuths = listAuths.Where(r => r.PermissionType == PermissionType.Folder).GroupBy(r => r.Name).Select(r => new
176191
{
177192
r.Key,
178193
Children = r.Select(u => u.Name).ToList()

0 commit comments

Comments
 (0)