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