😎解决按钮状态为“禁用”时非超管账户仍然可以显示的问题
This commit is contained in:
parent
8609879431
commit
6a2ad8c850
@ -361,6 +361,8 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
if (apiList != null) return apiList;
|
if (apiList != null) return apiList;
|
||||||
|
|
||||||
apiList = [[], []];
|
apiList = [[], []];
|
||||||
|
// 所有按钮权限集合
|
||||||
|
var allButtonList = await GetButtonList();
|
||||||
// 超管账号获取所有接口
|
// 超管账号获取所有接口
|
||||||
if (_userManager.SuperAdmin)
|
if (_userManager.SuperAdmin)
|
||||||
{
|
{
|
||||||
@ -371,9 +373,7 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
apiList[0].AddRange(controller.Children.Select(u => u.Route));
|
apiList[0].AddRange(controller.Children.Select(u => u.Route));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 所有按钮权限集合
|
// 接口没有对应的按钮权限集合
|
||||||
var allButtonList = await GetButtonList();
|
|
||||||
// 没有接口对应的按钮权限集合
|
|
||||||
var diffButtonList = allButtonList.Except(apiList[0]).ToList(); // 差集
|
var diffButtonList = allButtonList.Except(apiList[0]).ToList(); // 差集
|
||||||
apiList[0].AddRange(diffButtonList);
|
apiList[0].AddRange(diffButtonList);
|
||||||
}
|
}
|
||||||
@ -381,14 +381,12 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
{
|
{
|
||||||
// 当前账号所有角色集合
|
// 当前账号所有角色集合
|
||||||
var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
|
var roleIdList = await _sysUserRoleService.GetUserRoleIdList(_userManager.UserId);
|
||||||
|
// 已有按钮权限集合
|
||||||
|
var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
|
||||||
|
apiList[0] = await GetButtonList(menuIdList, false);
|
||||||
|
|
||||||
// 已勾选按钮权限集合
|
// 未有按钮权限集合(放到接口黑名单里面)
|
||||||
apiList[0] = await GetRoleButtonList(roleIdList);
|
|
||||||
|
|
||||||
// 未勾选按钮权限集合(放到接口黑名单里面)
|
|
||||||
var allButtonList = await GetButtonList();
|
|
||||||
apiList[1] = allButtonList.Except(apiList[0]).ToList(); // 差集
|
apiList[1] = allButtonList.Except(apiList[0]).ToList(); // 差集
|
||||||
|
|
||||||
// 接口黑名单集合
|
// 接口黑名单集合
|
||||||
var roleApiList = await _sysRoleApiService.GetRoleApiList(roleIdList);
|
var roleApiList = await _sysRoleApiService.GetRoleApiList(roleIdList);
|
||||||
apiList[1].AddRange(roleApiList);
|
apiList[1].AddRange(roleApiList);
|
||||||
@ -417,28 +415,30 @@ public class SysRoleService : IDynamicApiController, ITransient
|
|||||||
// return await GetButtonList(menuIdList);
|
// return await GetButtonList(menuIdList);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// 获取角色按钮权限集合
|
///// 获取角色按钮权限集合
|
||||||
/// </summary>
|
///// </summary>
|
||||||
/// <param name="roleIds"></param>
|
///// <param name="roleIds"></param>
|
||||||
/// <returns></returns>
|
///// <returns></returns>
|
||||||
[NonAction]
|
//[NonAction]
|
||||||
public async Task<List<string>> GetRoleButtonList(List<long> roleIds)
|
//public async Task<List<string>> GetRoleButtonList(List<long> roleIds)
|
||||||
{
|
//{
|
||||||
var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIds);
|
// var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIds);
|
||||||
return await GetButtonList(menuIdList);
|
// return await GetButtonList(menuIdList);
|
||||||
}
|
//}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据菜单Id集合获取按钮集合
|
/// 根据菜单Id集合获取按钮集合
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="menuIds"></param>
|
/// <param name="menuIds"></param>
|
||||||
|
/// <param name="isAll"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<List<string>> GetButtonList(List<long> menuIds = null)
|
private async Task<List<string>> GetButtonList(List<long> menuIds = null, bool isAll = true)
|
||||||
{
|
{
|
||||||
return await _sysRoleRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
|
return await _sysRoleRep.ChangeRepository<SqlSugarRepository<SysMenu>>().AsQueryable()
|
||||||
.Where(u => u.Type == MenuTypeEnum.Btn)
|
|
||||||
.WhereIF(menuIds != null && menuIds.Count > 0, u => menuIds.Contains(u.Id))
|
.WhereIF(menuIds != null && menuIds.Count > 0, u => menuIds.Contains(u.Id))
|
||||||
|
.WhereIF(!isAll, u => u.Status == StatusEnum.Enable)
|
||||||
|
.Where(u => u.Type == MenuTypeEnum.Btn)
|
||||||
.Select(u => u.Permission).ToListAsync();
|
.Select(u => u.Permission).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user