LayoutDataProvider.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using SharedKernel;
  2. using Admin.Constants;
  3. using Microsoft.AspNetCore.Authorization;
  4. using Microsoft.Extensions.Options;
  5. namespace Admin.Pages.Shared.Layout
  6. {
  7. public class LayoutDataProvider : ILayoutDataProvider
  8. {
  9. private readonly AppSettings _settings;
  10. private readonly IAuthorizationService _authorizationService;
  11. public LayoutDataProvider(IOptions<AppSettings> options, IAuthorizationService authorizationService)
  12. {
  13. _settings = options.Value;
  14. _authorizationService = authorizationService;
  15. }
  16. public async Task<LayoutViewModel> CreateAsync(HttpContext context)
  17. {
  18. var user = context.User;
  19. // Identity 권한/역할 기반 메뉴 필터링
  20. var filteredMenus = await Menus.FilterForUserAsync(user, _authorizationService);
  21. return new LayoutViewModel
  22. {
  23. UserName = user.Identity?.Name ?? "Guest",
  24. Role = user.FindFirst("role")?.Value ?? string.Empty,
  25. AppSettings = _settings,
  26. Menus = filteredMenus
  27. };
  28. }
  29. }
  30. }