-
Notifications
You must be signed in to change notification settings - Fork 165
Closed
Labels
questionFurther information is requestedFurther information is requested
Description
I am updating my project to v7 and I saw in the GraphQL.Authorization that it was basically obsolete. I removed all GraphQL.Server packages and added GraphQL.Server.All (v7).
I cannot find how I can remake this (Is it to be completely reworked because of the obsolete GraphQL.Authorization?):
Startup.cs:
services.AddScoped<IAuthorizationEvaluator, AuthorizationEvaluator>()
.AddTransient<IValidationRule, AuthorizationValidationRule>()
.AddTransient(s =>
{
var authSettings = new AuthorizationSettings();
authSettings.AddPolicy(AuthPolicies.AuthenticationPolicy, p => p.AddRequirement(new AuthenticationRequirement()));
authSettings.AddPolicy(AuthPolicies.AuthorizationPolicy, p => p.AddRequirement(new AuthorizationRequirement()));
return authSettings;
});
GraphQLMiddleware.cs:
var result = await _executer.ExecuteAsync(options =>
{
options.Schema = schema;
options.Query = graphQLRequest.Query;
options.OperationName = graphQLRequest.OperationName;
options.Variables = graphQLRequest.Variables;
options.UserContext = GenerateGraphQLUserContext(context);
options.EnableMetrics = enableMetrics;
options.RequestServices = context.RequestServices;
options.CancellationToken = context.RequestAborted;
options.Listeners.Add(dataLoaderDocumentListener);
options.ThrowOnUnhandledException = false;
**options.ValidationRules = context.RequestServices.GetServices<IValidationRule>().Concat(DocumentValidator.CoreRules);**
options.UnhandledExceptionDelegate = ctx =>
{
return HandleErrors(context, ctx, graphQLRequest, requestContext, envHelper, logger);
};
});
AuthenticationRequirerment.cs:
public class AuthenticationRequirement : IAuthorizationRequirement
{
public Task Authorize(AuthorizationContext context)
{
if (!context.User.Identity.IsAuthenticated)
{
context.ReportError("Not authenticated");
}
return Task.CompletedTask;
}
}
For the fields, queries and mutation I do this:
.AuthorizeWithPolicy(AuthPolicies.AuthorizationPolicy);
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested