Simple implementation of access control based on QueryPack.DispatchProxy
$ dotnet add package QueryPack.AuthSimple implementation of access control based on QueryPack.DispatchProxy
dotnet add package QueryPack.Auth
class EntityAccessConfiguration : IAccessConfiguration<AccessContext, IEntityService>
{
public void Configure(IAccessConfigurator<AccessContext, IEntityService> configurator)
{
configurator.Add(builder
=> builder.IsAuthenticated(e => e.CreateAsync)
.IsAuthenticated(e => e.UpdateAsync));
}
}
Program services.AddTransient<IEntityService, EntityService>();
services.ConfigureAccess(regestry =>
regestry.AddContext<AccessContext>()
.AddPrincipalResolver<LocalPrincipalResolver>()
.AccessFor(new EntityAccessConfiguration()));
IPrincipalResolverclass LocalPrincipalResolver : IPrincipalResolver
{
public IPrincipal Resolve()
{
var myIdentity = new GenericIdentity("MyIdentity");
var myPrincipal = new GenericPrincipal(myIdentity, null);
return myPrincipal;
}
}
IEntityService entitySerice;
var result = await entitySerice.CreateAsync("some_id", new EntityArg(), CancellationToken.None);