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);
        }
Esempio n. 2
0
 public GraphQLMiddleware(
     RequestDelegate next,
     GraphQLSettings settings,
     IDocumentExecuter executer,
     IDocumentWriter writer)
 {
     _next     = next;
     _settings = settings;
     _executer = executer;
     _writer   = writer;
 }