Closed
Description
I am struggling to figure out how to inject into an AuthorizationRequirement
I am trying to inject IClient in the following code example.
When setting up the policy, I have to use a constructor which means I am not using DI
_.AddPolicy(GraphQLPolicyNames.HomeAccess, policy =>
{
policy.AddRequirement(new BasicAccessRequirement());
policy.AddRequirement(new HomeAccessRequirement());
});
public class HomeAccessRequirement : IAuthorizationRequirement
{
private readonly IClient client;
public HomeAccessRequirement(IClient client)
{
this.client = client;
}
public Task Authorize(AuthorizationContext context)
{
if (AuthorizationHelpers.IsAdminOrSuperAdmin(context.User))
{
return Task.FromResult(0);
}
var hasId = context.InputVariables.ContainsKey("Id");
if (hasId)
{
dynamic id;
context.InputVariables.TryGetValue("Id", out id);
var home = client.GetData(id);
}
return Task.FromResult(0);
}
}
How can I achieve DI to inject the IClient which is needed for authorization