Permissions.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. namespace bitforum.Constants
  2. {
  3. public static class Permissions
  4. {
  5. public static List<string> GeneratePermissionsForMenu(Menu menu, string? parentName = null)
  6. {
  7. var permissions = new List<string>();
  8. // 상위 메뉴 이름과 현재 메뉴 이름을 조합
  9. var fullName = string.IsNullOrWhiteSpace(parentName) ? $"{menu.Name}.{menu.Id}" : $"{parentName} - {menu.Name}.{menu.Id}";
  10. // 하위 메뉴가 있는 경우 재귀적으로 권한 생성
  11. if (menu.Children != null && menu.Children.Any())
  12. {
  13. if (menu.Path is not null)
  14. {
  15. permissions.Add($"Permissions.{fullName}.Create");
  16. permissions.Add($"Permissions.{fullName}.View");
  17. permissions.Add($"Permissions.{fullName}.Edit");
  18. permissions.Add($"Permissions.{fullName}.Delete");
  19. }
  20. foreach (var child in menu.Children)
  21. {
  22. permissions.AddRange(GeneratePermissionsForMenu(child, menu.Name));
  23. }
  24. }
  25. else
  26. {
  27. permissions = new List<string>()
  28. {
  29. $"Permissions.{fullName}.Create",
  30. $"Permissions.{fullName}.View",
  31. $"Permissions.{fullName}.Edit",
  32. $"Permissions.{fullName}.Delete",
  33. };
  34. }
  35. return permissions;
  36. }
  37. public static List<string> GeneratePermissions()
  38. {
  39. var allPermissions = new List<string>();
  40. var menus = Menus.GetMenus();
  41. foreach (var menu in menus)
  42. {
  43. allPermissions.AddRange(GeneratePermissionsForMenu(menu));
  44. }
  45. return allPermissions;
  46. }
  47. }
  48. }