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.
48 lines
2.7 KiB
48 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.Hide && o.Type == PermissionType.Platform && o.Number.StartsWith("Read-"));
|
|
if (platformPermissions.Any())
|
|
{
|
|
<li class="nav-header">全部机构</li>
|
|
@foreach (var permission in platformPermissions)
|
|
{
|
|
var name = permission.Category.Name;
|
|
<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>@(name.Length>2?name:$"{name}管理")</p>
|
|
</a>
|
|
</li>
|
|
}
|
|
}
|
|
var organPermissions = permissions.Where(o => !o.Hide && o.Type == PermissionType.Organ && o.Number.StartsWith("Read-"));
|
|
if (organPermissions.Any())
|
|
{
|
|
<li class="nav-header">当前机构</li>
|
|
@foreach (var permission in organPermissions)
|
|
{
|
|
var name = permission.Category.Name;
|
|
var controller = $"Organ{permission.Category.Number}";
|
|
<li class="nav-item">
|
|
<a href="@Url.Action("Index", controller, new { area = module.Number })" class="@GetLinkClass(controller)">
|
|
<i class="far fa-circle nav-icon"></i>
|
|
<p>@(name.Length>2?name:$"{name}管理")</p>
|
|
</a>
|
|
</li>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</ul> |