Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ jobs:
- ubuntu-latest
- windows-latest
graphqlversion:
- 4.2.0
- 4.4.0
- 4.6.1
steps:
- name: Checkout source
uses: actions/checkout@v2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ namespace GraphQL.Authorization
public System.Collections.Generic.IEnumerable<string> DisplayValues { get; }
public System.Threading.Tasks.Task Authorize(GraphQL.Authorization.AuthorizationContext context) { }
}
public static class GraphQLBuilderExtensions
{
public static void AddAuthorization(this GraphQL.DI.IGraphQLBuilder builder, System.Action<GraphQL.Authorization.AuthorizationSettings> configure) { }
public static void AddAuthorization(this GraphQL.DI.IGraphQLBuilder builder, System.Action<GraphQL.Authorization.AuthorizationSettings, System.IServiceProvider> configure) { }
}
public interface IAuthorizationEvaluator
{
System.Threading.Tasks.Task<GraphQL.Authorization.AuthorizationResult> Evaluate(System.Security.Claims.ClaimsPrincipal principal, System.Collections.Generic.IDictionary<string, object> userContext, System.Collections.Generic.IReadOnlyDictionary<string, object> inputs, System.Collections.Generic.IEnumerable<string> requiredPolicies);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<PropertyGroup>
<TargetFrameworks>net5;netcoreapp3.1</TargetFrameworks>
<GraphQLTestVersion>4.2.0</GraphQLTestVersion>
<GraphQLTestVersion>4.6.0</GraphQLTestVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/GraphQL.Authorization/GraphQL.Authorization.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="GraphQL" Version="4.2.0" />
<PackageReference Include="GraphQL" Version="4.6.0" />
</ItemGroup>

</Project>
30 changes: 30 additions & 0 deletions src/GraphQL.Authorization/GraphQLBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System;
using GraphQL.DI;

namespace GraphQL.Authorization
{
/// <inheritdoc cref="GraphQL.GraphQLBuilderExtensions"/>
public static class GraphQLBuilderExtensions
{
/// <summary>
/// Registers <see cref="AuthorizationEvaluator"/> and <see cref="AuthorizationValidationRule"/> within the
/// dependency injection framework and configures the validation rule to be added to the list of validation rules
/// within <see cref="ExecutionOptions.ValidationRules"/> and <see cref="ExecutionOptions.CachedDocumentValidationRules"/>
/// upon document execution. Configures authorization settings with the specified configuration delegate.
/// </summary>
public static void AddAuthorization(this IGraphQLBuilder builder, Action<AuthorizationSettings, IServiceProvider> configure)
{
builder.TryRegister<IAuthorizationEvaluator, AuthorizationEvaluator>(ServiceLifetime.Singleton);
builder.AddValidationRule<AuthorizationValidationRule>(true);
builder.Configure(configure);
}

/// <inheritdoc cref="AddAuthorization(IGraphQLBuilder, Action{AuthorizationSettings, IServiceProvider})"/>
public static void AddAuthorization(this IGraphQLBuilder builder, Action<AuthorizationSettings> configure)
{
builder.TryRegister<IAuthorizationEvaluator, AuthorizationEvaluator>(ServiceLifetime.Singleton);
builder.AddValidationRule<AuthorizationValidationRule>(true);
builder.Configure(configure);
}
}
}
2 changes: 1 addition & 1 deletion src/Harness/GraphQLAuthExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Harness
/// <summary>
/// Extension methods to add GraphQL authorization into DI container.
/// </summary>
public static class GraphQLAuthExtensions
public static class GraphQLAuthExtensions // TODO: remove soon
{
/// <summary>
/// Adds all necessary classes into provided <paramref name="services"/>
Expand Down
1 change: 1 addition & 0 deletions src/Harness/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ type Query {
return schema;
});

// TODO: change to IGraphQLBuilder
// extension method defined in this project
services.AddGraphQLAuth((settings, provider) => settings.AddPolicy("AdminPolicy", p => p.RequireClaim("role", "Admin")));

Expand Down