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);
}
}