first commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Fitness_core_BE.DTOs.Rbac;
|
||||
using Fitness_core_BE.Interfaces;
|
||||
using Fitness_core_BE.Interfaces.Services;
|
||||
|
||||
namespace Fitness_core_BE.Services
|
||||
{
|
||||
public class NavigationService : INavigationService
|
||||
{
|
||||
private readonly IPermissionService _permissionService;
|
||||
private readonly INavItemRepository _navItemRepository;
|
||||
|
||||
public NavigationService(
|
||||
IPermissionService permissionService,
|
||||
INavItemRepository navItemRepository)
|
||||
{
|
||||
_permissionService = permissionService;
|
||||
_navItemRepository = navItemRepository;
|
||||
}
|
||||
|
||||
public async Task<NavResponseDto> GetNavigationAsync(HttpContext httpContext)
|
||||
{
|
||||
var permissionContext =
|
||||
await _permissionService.GetPermissionContextAsync(httpContext);
|
||||
var allItems = await _navItemRepository.GetActiveNavItemsOrdered();
|
||||
|
||||
var visibleItems = allItems
|
||||
.Where(item =>
|
||||
item.Key == "dashboard" ||
|
||||
permissionContext.IsOwner ||
|
||||
permissionContext.AllowedNavKeys.Contains(item.Key))
|
||||
.Where(item => !item.IsOwnerOnly || permissionContext.IsOwner)
|
||||
.Select(item => new NavItemDto
|
||||
{
|
||||
Key = item.Key,
|
||||
Label = item.Label,
|
||||
ShortLabel = item.ShortLabel,
|
||||
Href = item.Href,
|
||||
Icon = item.Icon
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return new NavResponseDto
|
||||
{
|
||||
IsOwner = permissionContext.IsOwner,
|
||||
Items = visibleItems
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user