using Hangfire.Dashboard;

namespace Dpz.Core.Web.Jobs.Security;

/// <summary>
/// Hangfire Dashboard 授权过滤器,检查用户是否拥有 System 权限。
/// </summary>
public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
{
    public bool Authorize(DashboardContext context)
    {
        var httpContext = context.GetHttpContext();
        if (httpContext == null)
        {
            return false;
        }

        if (httpContext.User.Identity?.IsAuthenticated != true)
        {
            return false;
        }

        return HangfireDashboardPermission.HasPermission(
            httpContext.User,
            EnumLibrary.Permissions.System
        );
    }
}
评论加载中...