Skip to content

Commit 659c70e

Browse files
feature(#22): this commit introduces an endpoint to list secrets in a realm, allowing you to retrieve secrets from a specific realm with the appropriate authorization.
1 parent d5afab9 commit 659c70e

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

Applications/Backend/Source/HttpsRichardy.Federation.WebApi/Controllers/RealmsController.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,23 @@ public async Task<IActionResult> DeleteRealmAsync([FromRoute] string id, [FromQu
7272
};
7373
}
7474

75+
[HttpGet("{id}/secrets")]
76+
[Authorize(Roles = Permissions.ViewRealms)]
77+
[Stability(Stability.Stable)]
78+
public async Task<IActionResult> GetRealmSecretsAsync([FromRoute] string id, [FromQuery] FetchRealmSecretsParameters request, CancellationToken cancellation)
79+
{
80+
var result = await dispatcher.DispatchAsync(request with { RealmId = id }, cancellation);
81+
82+
return result switch
83+
{
84+
{ IsSuccess: true } when result.Data is not null =>
85+
StatusCode(StatusCodes.Status200OK, result.Data),
86+
87+
{ IsFailure: true } when result.Error == RealmErrors.RealmDoesNotExist =>
88+
StatusCode(StatusCodes.Status404NotFound, result.Error),
89+
};
90+
}
91+
7592
[HttpGet("{id}/permissions")]
7693
[Authorize(Roles = Permissions.ViewPermissions)]
7794
[Stability(Stability.Stable)]

Applications/Backend/Source/HttpsRichardy.Federation.WebApi/Conventions/RealmsConventions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public static void UpdateRealmAsync(string id, RealmUpdateScheme request, Cancel
2323
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]
2424
public static void DeleteRealmAsync(string id, CancellationToken cancellation) { }
2525

26+
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
27+
[ProducesResponseType(typeof(IReadOnlyCollection<SecretScheme>), StatusCodes.Status200OK)]
28+
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]
29+
public static void GetRealmSecretsAsync(string id, FetchRealmSecretsParameters request, CancellationToken cancellation) { }
30+
2631
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
2732
[ProducesResponseType(typeof(IReadOnlyCollection<PermissionDetailsScheme>), StatusCodes.Status200OK)]
2833
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]

0 commit comments

Comments
 (0)