using Hangfire.Dashboard;

namespace foodmarket.Api.Background;

/// <summary>Авторизационный фильтр Hangfire Dashboard. Пускает только
/// аутентифицированных пользователей с ролью SuperAdmin. ClaimsPrincipal
/// берётся из <c>HttpContext.User</c> — то есть стандартный OpenIddict-токен
/// (Bearer) валидируется до этой проверки middleware'ом аутентификации.
///
/// Hangfire по умолчанию пускает только loopback — мы хотим строже:
/// доступ к дашборду = доступ к фоновым джобам всех тенантов, что эквивалентно
/// SuperAdmin-консоли в Web-админке.</summary>
public class SuperAdminHangfireFilter : IDashboardAuthorizationFilter
{
    public bool Authorize(DashboardContext context)
    {
        var http = context.GetHttpContext();
        var user = http.User;
        if (user?.Identity?.IsAuthenticated != true) return false;
        return user.IsInRole("SuperAdmin");
    }
}
