sozsoft-platform/api/src/Sozsoft.Platform.Domain/Extensions/AbpPermissionsExtensions.cs

53 lines
1.7 KiB
C#
Raw Normal View History

2026-02-24 20:44:16 +00:00
using System;
using System.Linq;
using Volo.Abp.Data;
using Volo.Abp.PermissionManagement;
namespace Sozsoft.Platform.Extensions;
public static class AbpPermissionsExtensions
{
/// <summary>
/// Menü gruplarını pipe karakteriyle ayrılmış string olarak kaydeder. (örnek: "Erp|Kurs")
/// </summary>
public static void SetMenuGroup(this PermissionDefinitionRecord permission, string menuGroup)
{
if (string.IsNullOrWhiteSpace(menuGroup))
{
permission.SetProperty(PlatformConsts.Permissions.MenuGroup, null);
return;
}
// 🔹 Gereksiz boşlukları temizle
var cleaned = string.Join(
"|",
2026-02-24 20:44:16 +00:00
menuGroup
.Split(PlatformConsts.MultiValueDelimiter, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
2026-02-24 20:44:16 +00:00
.Distinct()
);
// 🔹 Veritabanına "Erp|Kurs" formatında kaydet
permission.SetProperty(PlatformConsts.Permissions.MenuGroup, cleaned);
}
/// <summary>
/// Menü gruplarını veritabanındaki pipe formatından string[] olarak döndürür. (örnek: "Erp|Kurs" → ["Erp", "Kurs"])
/// </summary>
public static string[] GetMenuGroup(this PermissionDefinitionRecord permission)
{
var value = permission.GetProperty<string>(PlatformConsts.Permissions.MenuGroup);
if (string.IsNullOrWhiteSpace(value))
{
return Array.Empty<string>();
}
// 🔹 "Erp|Kurs" -> ["Erp", "Kurs"]
return value
.Split(PlatformConsts.MultiValueDelimiter, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
2026-02-24 20:44:16 +00:00
.Distinct()
.ToArray();
}
}