diff --git a/Src/Dlhis.External/OpenApi/Controllers/GainfosController.cs b/Src/Dlhis.External/OpenApi/Controllers/GainfosController.cs
index 8834618a..948aaabc 100644
--- a/Src/Dlhis.External/OpenApi/Controllers/GainfosController.cs
+++ b/Src/Dlhis.External/OpenApi/Controllers/GainfosController.cs
@@ -51,7 +51,7 @@ public class GainfosController : ControllerBase
/// 获取归档人员数据
///
///
- [HttpGet("/archive/pagination")]
+ [HttpGet("archive/pagination")]
public async Task> GetGainfoLeavePageAsync([FromQuery] GainfoArchivePageRequest request)
{
return await _gainfoService.GetGainfoLeavePageAsync(request);
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
index bde06712..98097b78 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
@@ -72,22 +72,36 @@ public class RoleService : IRoleService
}
}
+ private static readonly List _roles = new() { "admin", "tenant-admin" };
public async Task AssignRoleAsync(RoleAssignRequest request)
{
- var myUserId = _currentUser.GetIntSubjectId();
+ if (request.UserId == 1)
+ throw new UserFriendlyException("不允许分配给系统管理员");
- //不能被其他人修改
- if (request.UserId == 1 && request.UserId != myUserId)
- {
- throw new UserFriendlyException("无法修改admin角色");
- }
-
- var existsUser = await _dbContext.Queryable().Where(x => x.Id == request.UserId).AnyAsync();
- existsUser.ThrowIfFalse("分配的用户不存在");
+ var user = await _dbContext.Queryable().Where(x => x.Id == request.UserId).AnyAsync();
+ user.ThrowIfFalse("分配的用户不存在");
var userRole = await _dbContext.Queryable().Where(x => x.UserId == request.UserId).FirstAsync();
+ //操作的用户存在角色
+ if (userRole != null)
+ {
+ var role = await _dbContext.Queryable().Where(x => x.Id == userRole.RoleId).FirstAsync();
+ if (role != null)
+ {
+ var myRole = _currentUser.GetRole();
+ var myi = _roles.IndexOf(myRole);
+
+ var ii = _roles.IndexOf(role.Name);
+ if (ii <= myi)
+ {
+ throw new UserFriendlyException("不可操作当前用户");
+ }
+ }
+ }
+
+
if (request.RoleId.HasValue)
{
var existsRole = await _dbContext.Queryable().Where(x => x.Id == request.RoleId).AnyAsync();