File tree Expand file tree Collapse file tree
Applications/Backend/Source/HttpsRichardy.Federation.Application Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ namespace HttpsRichardy . Federation . Application . Handlers . Client ;
2+
3+ public sealed class RevokeAudienceFromClientHandler ( IClientCollection clientCollection ) :
4+ IDispatchHandler < RevokeClientAudienceScheme , Result < IReadOnlyCollection < string > > >
5+ {
6+ public async Task < Result < IReadOnlyCollection < string > > > HandleAsync (
7+ RevokeClientAudienceScheme parameters , CancellationToken cancellation = default )
8+ {
9+ var filters = ClientFilters . WithSpecifications ( )
10+ . WithIdentifier ( parameters . Id )
11+ . Build ( ) ;
12+
13+ var clients = await clientCollection . GetClientsAsync ( filters , cancellation ) ;
14+ var client = clients . FirstOrDefault ( ) ;
15+
16+ if ( client is null )
17+ {
18+ return Result < IReadOnlyCollection < string > > . Failure ( ClientErrors . ClientDoesNotExist ) ;
19+ }
20+
21+ var audienceToRemove = client . Audiences . FirstOrDefault ( current => current . Value == parameters . Audience ) ;
22+ if ( audienceToRemove is null )
23+ {
24+ return Result < IReadOnlyCollection < string > > . Failure ( ClientErrors . AudienceNotAssigned ) ;
25+ }
26+
27+ client . Audiences . Remove ( audienceToRemove ) ;
28+
29+ await clientCollection . UpdateAsync ( client , cancellation ) ;
30+
31+ return Result < IReadOnlyCollection < string > > . Success ( [ .. client . Audiences . Select ( current => current . Value ) ] ) ;
32+ }
33+ }
Original file line number Diff line number Diff line change 1+ namespace HttpsRichardy . Federation . Application . Payloads . Client ;
2+
3+ public sealed record RevokeClientAudienceScheme :
4+ IDispatchable < Result < IReadOnlyCollection < string > > >
5+ {
6+ [ JsonIgnore ]
7+ public string Id { get ; init ; } = default ! ;
8+
9+ [ JsonIgnore ]
10+ public string Audience { get ; init ; } = default ! ;
11+ }
You can’t perform that action at this time.
0 commit comments