Skip to content

Commit 57135a8

Browse files
feature(#22): this commit updates handler to include realm collection and enhance secret retrieval logic
1 parent e6d2f63 commit 57135a8

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

Applications/Backend/Source/HttpsRichardy.Federation.Application/Handlers/Connect/FetchJsonWebKeysHandler.cs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
namespace HttpsRichardy.Federation.Application.Handlers.Connect;
22

3-
public sealed class FetchJsonWebKeysHandler(ISecretCollection collection) :
3+
public sealed class FetchJsonWebKeysHandler(ISecretCollection collection, IRealmCollection realmCollection) :
44
IDispatchHandler<FetchJsonWebKeysParameters, Result<JsonWebKeySetScheme>>
55
{
66
public async Task<Result<JsonWebKeySetScheme>> HandleAsync(
77
FetchJsonWebKeysParameters parameters, CancellationToken cancellation = default)
88
{
9-
var secret = await collection.GetSecretAsync(cancellation: cancellation);
10-
var jwks = JsonWebKeysMapper.AsJsonWebKeySetScheme(secret);
9+
var realmFilters = RealmFilters.WithSpecifications()
10+
.WithName(parameters.Realm)
11+
.Build();
12+
13+
var realms = await realmCollection.GetRealmsAsync(realmFilters, cancellation);
14+
var realm = realms.FirstOrDefault();
15+
16+
if (realm is null)
17+
{
18+
return Result<JsonWebKeySetScheme>.Failure(RealmErrors.RealmDoesNotExist);
19+
}
20+
21+
var filters = SecretFilters.WithSpecifications()
22+
.WithCanValidate()
23+
.WithRealm(realm.Id)
24+
.Build();
25+
26+
var secrets = await collection.GetSecretsAsync(filters, cancellation);
27+
var jwks = JsonWebKeysMapper.AsJsonWebKeySetScheme(secrets);
1128

1229
return Result<JsonWebKeySetScheme>.Success(jwks);
1330
}

0 commit comments

Comments
 (0)