Zum Inhalt

Response-Filter

Ein Response-Filter ändert, was ein Endpunkt zurückgibt, abhängig davon, wer fragt, ohne den Handler anzufassen. Coworkee bindet Nextended.ResponseFilters für Minimal-APIs und MVC an.

MyApp.Catalog/ResponseFilters/DashboardResponseFilter.cs
using Coworkee.ResponseFilters;
using Nextended.ResponseFilters;

internal sealed class DashboardResponseFilter : ResponseFilter<DashboardDto>
{
    public DashboardResponseFilter()
    {
        Nullify(d => d.Users).UnlessGranted(IdentityPermissions.Users.View);
        Nullify(d => d.Roles).UnlessGranted(IdentityPermissions.Roles.View);
    }
}
MyApp.Api/MyAppApiModule.cs
context.Services.AddCoworkeeResponseFilters([typeof(MyAppCatalogModule).Assembly]);

AddCoworkeeResponseFilters findet alle Filter in den angegebenen Assemblies und wendet sie auf jede mit MapCoworkeeApi angelegte Gruppe und auf MVC-Ergebnisse an.

Regeln

Regel Wirkung
Remove(x => x.Token) die Eigenschaft verschwindet aus dem JSON
Nullify(x => x.Salary) die Eigenschaft wird als null gesendet
Mask(x => x.Card).KeepFirst(4).KeepLast(4) 4111********1111
Hash(x => x.Email).AsSha256() ein stabiler Hash statt des Werts

Jede Regel endet mit einer Bedingung: .Always(), .When(...), .Unless(...) oder den Coworkee-Kurzformen .WhenGranted(permission) und .UnlessGranted(permission).

OData

OData serialisiert seine Ergebnisse selbst. Die Filter lassen sie aus; blenden Sie interne Eigenschaften im Modell aus (AddODataEntity<T>(set, permission, x => x.Secret)) und schränken Sie Zeilen mit einem Entity-Filter ein.