using SharedKernel; using Admin.Constants; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Options; namespace Admin.Pages.Shared.Layout { public class LayoutDataProvider : ILayoutDataProvider { private readonly AppSettings _settings; private readonly IAuthorizationService _authorizationService; public LayoutDataProvider(IOptions options, IAuthorizationService authorizationService) { _settings = options.Value; _authorizationService = authorizationService; } public async Task CreateAsync(HttpContext context) { var user = context.User; // Identity 권한/역할 기반 메뉴 필터링 var filteredMenus = await Menus.FilterForUserAsync(user, _authorizationService); return new LayoutViewModel { UserName = user.Identity?.Name ?? "Guest", Role = user.FindFirst("role")?.Value ?? string.Empty, AppSettings = _settings, Menus = filteredMenus }; } } }