public static void UseGraphQlWithAuth(this IApplicationBuilder app) { var settings = new GraphQLSettings { ValidationRules = DocumentValidator.CoreRules.Concat(app.ApplicationServices.GetServices <IValidationRule>()), BuildUserContext = httpContext => { if (httpContext.User.Identity.IsAuthenticated) { return(new GraphQLUserContext { User = httpContext.User }); } var result = httpContext.AuthenticateAsync().GetAwaiter().GetResult(); if (result.Succeeded) { httpContext.User = result.Principal; } return(new GraphQLUserContext { User = result.Principal }); } }; app.UseMiddleware <GraphQLMiddleware>(settings); }
public GraphQLMiddleware( RequestDelegate next, GraphQLSettings settings, IDocumentExecuter executer, IDocumentWriter writer) { _next = next; _settings = settings; _executer = executer; _writer = writer; }