Skip to content

Commit 821ac92

Browse files
feature(#22): this commit introduces an endpoint for rotating realm secrets
1 parent 4095c35 commit 821ac92

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,24 @@ public async Task<IActionResult> GetRealmSecretsAsync([FromRoute] string id, [Fr
8989
};
9090
}
9191

92+
[HttpPost("{id}/secrets/rotate")]
93+
[Authorize(Roles = Permissions.EditRealm)]
94+
[Stability(Stability.Stable)]
95+
public async Task<IActionResult> RotateRealmSecretsAsync([FromRoute] string id, CancellationToken cancellation)
96+
{
97+
var request = new RotateRealmSecretsParameters { RealmId = id };
98+
var result = await dispatcher.DispatchAsync(request, cancellation);
99+
100+
return result switch
101+
{
102+
{ IsSuccess: true } =>
103+
StatusCode(StatusCodes.Status204NoContent),
104+
105+
{ IsFailure: true } when result.Error == RealmErrors.RealmDoesNotExist =>
106+
StatusCode(StatusCodes.Status404NotFound, result.Error),
107+
};
108+
}
109+
92110
[HttpGet("{id}/permissions")]
93111
[Authorize(Roles = Permissions.ViewPermissions)]
94112
[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
@@ -28,6 +28,11 @@ public static void DeleteRealmAsync(string id, CancellationToken cancellation) {
2828
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]
2929
public static void GetRealmSecretsAsync(string id, FetchRealmSecretsParameters request, CancellationToken cancellation) { }
3030

31+
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
32+
[ProducesResponseType(StatusCodes.Status204NoContent)]
33+
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]
34+
public static void RotateRealmSecretsAsync(string id, CancellationToken cancellation) { }
35+
3136
[ApiConventionNameMatch(ApiConventionNameMatchBehavior.Prefix)]
3237
[ProducesResponseType(typeof(IReadOnlyCollection<PermissionDetailsScheme>), StatusCodes.Status200OK)]
3338
[ProducesResponseType(typeof(Error), StatusCodes.Status404NotFound)]

0 commit comments

Comments
 (0)