User Context
You can pass a UserContext
(any IDictionary<string, object?>
) to provide access to
your specific data. The UserContext
is accessible in field resolvers and validation rules.
public class MyGraphQLUserContext : Dictionary<string, object?>
{
}
await schema.ExecuteAsync(_ =>
{
_.Query = "...";
_.UserContext = new MyGraphQLUserContext();
});
public class Query : ObjectGraphType
{
public Query()
{
Field<DroidType>("hero")
.Resolve(context =>
{
var userContext = context.UserContext as MyGraphQLUserContext;
...
});
}
}
If you need to access the User from the http request and populate this in validation rules you may need to add a User property to your custom UserContext
class and modify your Startup configuration as follows:
public class MyGraphQLUserContext : Dictionary<string, object?>
{
public ClaimsPrincipal User { get; set; }
public MyGraphQLUserContext(ClaimsPrincipal user)
{
User = user;
}
}
services.AddGraphQL()
.AddUserContextBuilder(httpContext => new MyGraphQLUserContext(httpContext.User));
Please note that the AddUserContextBuilder
method above comes from the GraphQL.Server
project.