added permission for fetch menu according feature permission
This commit is contained in:
parent
ff5f673475
commit
732cfbef3e
@ -6,6 +6,7 @@ using Marco.Pms.Model.Dtos.AppMenu;
|
||||
using Marco.Pms.Model.Employees;
|
||||
using Marco.Pms.Model.Entitlements;
|
||||
using Marco.Pms.Model.Utilities;
|
||||
using Marco.Pms.Model.ViewModels.AppMenu;
|
||||
using Marco.Pms.Services.Service;
|
||||
using Marco.Pms.Services.Service.ServiceInterfaces;
|
||||
using MarcoBMS.Services.Helpers;
|
||||
@ -15,6 +16,7 @@ using Microsoft.AspNetCore.Http.HttpResults;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using MongoDB.Driver;
|
||||
using Org.BouncyCastle.Asn1.Ocsp;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Collections.Specialized.BitVector32;
|
||||
|
||||
@ -34,7 +36,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
private readonly ILoggingService _logger;
|
||||
private readonly PermissionServices _permissions;
|
||||
|
||||
public AppMenuController(EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper, RolesHelper rolesHelper, SideBarMenu sideBarMenuHelper, IMapper mapper, ILoggingService logger, PermissionServices permissions = null)
|
||||
public AppMenuController(EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper, RolesHelper rolesHelper, SideBarMenu sideBarMenuHelper, IMapper mapper, ILoggingService logger, PermissionServices permissions)
|
||||
{
|
||||
|
||||
_userHelper = userHelper;
|
||||
@ -226,18 +228,84 @@ namespace Marco.Pms.Services.Controllers
|
||||
[HttpGet("sidebar/menu-section")]
|
||||
public async Task<IActionResult> GetAppSideBarMenu()
|
||||
{
|
||||
var LoggedUser = await _userHelper.GetCurrentUserAsync();
|
||||
|
||||
|
||||
var loggedUser = await _userHelper.GetCurrentUserAsync();
|
||||
var employeeId = Guid.Parse(loggedUser.Id);
|
||||
|
||||
var menus = await _sideBarMenuHelper.GetAllMenuSectionsAsync();
|
||||
|
||||
foreach (var menu in menus)
|
||||
{
|
||||
var allowedItems = new List<MenuItem>();
|
||||
|
||||
foreach (var item in menu.Items)
|
||||
{
|
||||
bool isAllowed = false;
|
||||
|
||||
if (item.PermissionKeys == null || !item.PermissionKeys.Any())
|
||||
{
|
||||
isAllowed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pk in item.PermissionKeys)
|
||||
{
|
||||
if (Guid.TryParse(pk, out var permissionId))
|
||||
{
|
||||
if (await _permissions.HasPermission(employeeId, permissionId))
|
||||
{
|
||||
isAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isAllowed)
|
||||
{
|
||||
|
||||
if (item.Submenu != null && item.Submenu.Any())
|
||||
{
|
||||
var allowedSubmenus = new List<SubMenuItem>();
|
||||
foreach (var sm in item.Submenu)
|
||||
{
|
||||
bool smAllowed = false;
|
||||
if (sm.PermissionKeys == null || !sm.PermissionKeys.Any())
|
||||
{
|
||||
smAllowed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var pk in sm.PermissionKeys)
|
||||
{
|
||||
if (Guid.TryParse(pk, out var permissionId))
|
||||
{
|
||||
if (await _permissions.HasPermission(employeeId, permissionId))
|
||||
{
|
||||
smAllowed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (smAllowed)
|
||||
allowedSubmenus.Add(sm);
|
||||
}
|
||||
item.Submenu = allowedSubmenus;
|
||||
}
|
||||
|
||||
allowedItems.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
menu.Items = allowedItems;
|
||||
}
|
||||
|
||||
return Ok(menus);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user