using Microsoft.AspNetCore.Authorization;
namespace foodmarket.Api.Infrastructure.Authorization;
/// Требование «у текущего пользователя включён ХОТЯ БЫ ОДИН из флагов
/// прав в его роли (RolePermissions)». Имя права = имя
/// boolean-свойства RolePermissions (например, "ProductsEdit"). Несколько
/// прав через запятую = ИЛИ-семантика (например "MoneyView,CashShiftOperate" —
/// эндпоинт доступен и финансисту, и кассиру для своей смены).
public sealed class PermissionRequirement : IAuthorizationRequirement
{
public IReadOnlyList Permissions { get; }
/// Первое право — для обратной совместимости/логов.
public string Permission => Permissions[0];
public PermissionRequirement(string permission)
=> Permissions = permission.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
}