public static BuildFunc UseHangfireDashboard( [NotNull] this BuildFunc builder, [NotNull] DashboardOptions options, [NotNull] JobStorage storage, [NotNull] RouteCollection routes, [CanBeNull] IOwinDashboardAntiforgery antiforgery) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } if (routes == null) { throw new ArgumentNullException(nameof(routes)); } builder(_ => UseHangfireDashboard(options, storage, routes, antiforgery)); return(builder); }
/// <summary> /// Adds Dashboard UI middleware to the OWIN request processing pipeline with the /// specified parameters and antiforgery service. /// </summary> /// <param name="builder">OWIN application builder.</param> /// <param name="pathMatch">Path prefix for middleware to use, e.g. "/hangfire".</param> /// <param name="options">Options for Dashboard UI.</param> /// <param name="storage">Job storage to use by Dashboard IO.</param> /// <param name="antiforgery">Antiforgery service.</param> /// /// <exception cref="ArgumentNullException"><paramref name="builder"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="pathMatch"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="options"/> is null.</exception> /// <exception cref="ArgumentNullException"><paramref name="storage"/> is null.</exception> /// /// <remarks> /// Please see <see cref="AppBuilderExtensions"/> for details and examples. /// </remarks> public static IAppBuilder UseHangfireDashboard( [NotNull] this IAppBuilder builder, [NotNull] string pathMatch, [NotNull] DashboardOptions options, [NotNull] JobStorage storage, [CanBeNull] IOwinDashboardAntiforgery antiforgery) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (pathMatch == null) { throw new ArgumentNullException(nameof(pathMatch)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } SignatureConversions.AddConversions(builder); builder.Map(pathMatch, subApp => subApp .UseOwin() .UseHangfireDashboard(options, storage, DashboardRoutes.Routes, antiforgery)); return(builder); }
public static MidFunc UseHangfireDashboard( [NotNull] DashboardOptions options, [NotNull] JobStorage storage, [NotNull] RouteCollection routes, [CanBeNull] IOwinDashboardAntiforgery antiforgery) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } if (routes == null) { throw new ArgumentNullException(nameof(routes)); } return (next => async env => { var owinContext = new OwinContext(env); var context = new OwinDashboardContext(storage, options, env); if (!options.IgnoreAntiforgeryToken && antiforgery != null) { context.AntiforgeryHeader = antiforgery.HeaderName; context.AntiforgeryToken = antiforgery.GetToken(env); } #pragma warning disable 618 if (options.AuthorizationFilters != null) { if (options.AuthorizationFilters.Any(filter => !filter.Authorize(owinContext.Environment))) #pragma warning restore 618 { owinContext.Response.StatusCode = GetUnauthorizedStatusCode(owinContext); return; } } else { // ReSharper disable once LoopCanBeConvertedToQuery foreach (var filter in options.Authorization) { if (!filter.Authorize(context)) { owinContext.Response.StatusCode = GetUnauthorizedStatusCode(owinContext); return; } } foreach (var filter in options.AsyncAuthorization) { if (!await filter.AuthorizeAsync(context)) { owinContext.Response.StatusCode = GetUnauthorizedStatusCode(owinContext); return; } } } if (!options.IgnoreAntiforgeryToken && antiforgery != null && !antiforgery.ValidateRequest(env)) { owinContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; return; } var findResult = routes.FindDispatcher(owinContext.Request.Path.Value); if (findResult == null) { await next(env); return; } context.UriMatch = findResult.Item2; await findResult.Item1.Dispatch(context); }); }
public static MidFunc UseHangfireDashboard( [NotNull] DashboardOptions options, [NotNull] JobStorage storage, [NotNull] RouteCollection routes, [CanBeNull] IOwinDashboardAntiforgery antiforgery) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (storage == null) { throw new ArgumentNullException(nameof(storage)); } if (routes == null) { throw new ArgumentNullException(nameof(routes)); } return (next => env => { var owinContext = new OwinContext(env); var context = new OwinDashboardContext(storage, options, env); if (!options.IgnoreAntiforgeryToken && antiforgery != null) { context.AntiforgeryHeader = antiforgery.HeaderName; context.AntiforgeryToken = antiforgery.GetToken(env); } #pragma warning disable 618 if (options.AuthorizationFilters != null) { if (options.AuthorizationFilters.Any(filter => !filter.Authorize(owinContext.Environment))) #pragma warning restore 618 { return Unauthorized(owinContext); } } else { if (options.Authorization.Any(filter => !filter.Authorize(context))) { return Unauthorized(owinContext); } } if (!options.IgnoreAntiforgeryToken && antiforgery != null && !antiforgery.ValidateRequest(env)) { return Unauthorized(owinContext); } var findResult = routes.FindDispatcher(owinContext.Request.Path.Value); if (findResult == null) { return next(env); } context.UriMatch = findResult.Item2; return findResult.Item1.Dispatch(context); }); }