lvfengfree b92e1119ae fix: 修复菜单为空问题 - 移除后端过滤home路由的错误逻辑
- 修复RouteService中错误过滤home路由的问题
- 后端现在正确返回所有用户有权限的路由
- 添加设备管理相关功能(列表、在线监控、电源管理、远程监控)
- 添加详细的修复文档和重启脚本
- 更新权限配置脚本

问题根源:后端代码中有逻辑会过滤掉home路由,导致前端收到空数组,无法生成菜单
解决方案:移除过滤home路由的逻辑,让后端返回所有有权限的路由
2026-03-01 09:50:19 +08:00

101 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;
using System.Management.Automation.Provider;
namespace Intel.Management.PSModule
{
class DriveInfo : PSDriveInfo
{
protected DriveContainer _root;
ChildWriter _defaultWriter;
public DriveInfo(PSDriveInfo driveInfo)
: base(driveInfo)
{
}
public DriveItem GetItemFromPath(string path)
{
return GetItemFromPath(path, null);
}
public virtual DriveItem GetItemFromPath(string path,DriveProvider provider)
{
char[] pathChar = { '\\', '/' };
string[] paths = path.Split(pathChar, StringSplitOptions.RemoveEmptyEntries);
//find item in path
DriveItem parent = _root;
DriveItem foundItem = null;
if (string.Compare(path, _root.Name, true) == 0 ||
string.Compare(path, "\\", true)==0 ||
string.Compare(path, "/", true)==0)
{
foundItem = _root;
}
if (_defaultWriter == null)
_defaultWriter = new ChildWriter();
for (int i = 0; i < paths.Length; i++)
{
foundItem = null;
if (parent is DriveContainer)
{
DriveContainer parentContainer = parent as DriveContainer;
_defaultWriter.Provider = provider;
_defaultWriter.SetParent(parentContainer);
try
{
_defaultWriter.Flush();
}
finally
{
_defaultWriter.SetParent(null);
_defaultWriter.Provider = null;
}
DriveItem[] items = parentContainer.GetChildItems();
foreach (DriveItem childItem in items)
{
if (string.Compare(childItem.Name, paths[i], true) == 0)
{
foundItem = childItem;
parent = foundItem;
break;
}
}
}
if (foundItem == null)//path not correct
{
break;
}
}
return foundItem;
}
public ChildWriter DefaultWriter
{
get { return _defaultWriter; }
}
}
}