using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp.Authorization.Permissions; namespace Sozsoft.Mcp; public static class PermissionCheckerExtensions { /// /// Verilen yetki adlarından kullanıcıya açık olanlar; tek toplu kontrol yapılır ve sonuç /// adla sorgulanabilen küme olarak döner. Araç listesi, ekran süzgeci ve ret mesajı aynı kümeyi okur. /// public static async Task> GetGrantedNamesAsync( this IPermissionChecker permissionChecker, IEnumerable names) { var distinct = names.Distinct(StringComparer.Ordinal).ToArray(); if (distinct.Length == 0) { return new HashSet(StringComparer.Ordinal); } var grants = await permissionChecker.IsGrantedAsync(distinct); return grants.Result .Where(result => result.Value == PermissionGrantResult.Granted) .Select(result => result.Key) .ToHashSet(StringComparer.Ordinal); } }