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