You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iot/projects/Platform/Areas/Admin/Views/Shared/_Menu.cshtml

52 lines
2.7 KiB

@using System.Security.Claims
<ul class="nav nav-pills nav-sidebar flex-column nav-flat" data-widget="treeview" role="menu" data-accordion="nav-icon false">
<li class="nav-item"><a class="@GetLinkClass("Home")" href="@Url.Action("Index","Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>
@{
var modules = this.Context.Request.HttpContext.Items["modules"] as List<AppModule>;
if (modules != null)
{
var area = this.ViewContext.RouteData.Values["area"].ToString();
var module = modules.FirstOrDefault(o => o.Number == area);
if (module != null)
{
var numbers = User.Claims.Where(o => o.Type == ClaimTypes.Role).Select(o => o.Value).ToList();
var permissions = module.PermissionCategories.SelectMany(o => o.Permissions).Where(o => numbers.Contains(o.Number)).OrderBy(o => o.Category.Order);
var platformPermissions = permissions.Where(o => o.Type == PermissionType.Platform);
if (platformPermissions.Any())
{
<li class="nav-header">全部机构</li>
@foreach (var permission in platformPermissions)
{
if (permission.Number.StartsWith("Read-"))
{
<li class="nav-item">
<a href="@Url.Action("Index", permission.Category.Number, new { area = module.Number })" class="@GetLinkClass(permission.Category.Number)">
<i class="far fa-circle nav-icon"></i>
<p>@permission.Category.Name</p>
</a>
</li>
}
}
}
var organPermissions = permissions.Where(o => o.Type == PermissionType.Organ);
if (organPermissions.Any())
{
<li class="nav-header">当前机构</li>
@foreach (var permission in organPermissions)
{
if (permission.Number.StartsWith("Read-"))
{
<li class="nav-item">
<a href="@Url.Action("Index", permission.Category.Number, new { area = module.Number })" class="@GetLinkClass(permission.Category.Number)">
<i class="far fa-circle nav-icon"></i>
<p>@permission.Category.Name</p>
</a>
</li>
}
}
}
}
}
}
</ul>